подсветка solr в старой и новой версиях

Я переношу веб-сайт со старой версии solr (1.4.1) на текущую версию выпуска (5.2.1) на другом компьютере и замечаю некоторые различия.

В старой версии я мог получить выделение с помощью такого URL-адреса:

http://localhost:8983/solr/select?indent=on&q=text:software/&start=0&rows=10&fl=id,score,title&wt=json&hl=on&hl.fragsize=200

В новой версии есть одно отличие: мне нужно указать коллекцию. Другое отличие состоит в том, что новая версия выдает ошибку, если я ставлю text: перед значением q.

Итак, принимая во внимание эти различия, я получаю такой URL-адрес:

http://localhost:8983/solr/default/select?indent=on&q=software/&start=0&rows=10&fl=id,score,title&wt=json&hl=on&hl.snippets=1&hl.fl=%2a&hl.fragsize=200

Этот второй URL-адрес не дает мне выделять фрагменты/сниппеты. То есть, где старый URL-адрес будет давать что-то вроде этого:

"highlighting":{
  "document0_id":{"text":["The <em>software</em> is awesome"]}}

Новый URL-адрес дает что-то вроде этого:

"highlighting":{
  "document0_id":{}}

Что мне нужно сделать, чтобы выделить фрагменты, возвращаемые в solr 5.2.1?

[отредактировано]

Кроме того, я попытался выбрать один документ по его идентификатору на обеих машинах. На старой машине URL типа

http://localhost:8983/solr/select?wt=json&indent=true&q=id:thedocumentid

возвращает некоторый JSON, который включает поле text, содержащее полный доступный для поиска текст исходного HTML-документа. На новой машине аналогичный URL (но тот, который включает коллекцию):

http://localhost:8983/solr/default/select?wt=json&indent=true&q=id:thedocumentid

... возвращает аналогичный JSON, который не включает поле text.

Отмечу, что поиск возвращает правильные результаты; проблема в том, что на новой машине в результаты не включается подсветка фрагментов. Так что, похоже, проблема в том, что мне нужно указать, что эти документы имеют текстовое поле, когда я их индексирую; как я это сделал?


person Dan Tenenbaum    schedule 28.07.2015    source источник


Ответы (2)


Коллега (не соблазненный щедростью) заметил, что в моем поле text в моем schema.xml было stored="false", и предложил изменить его на true. Это помогло.

person Dan Tenenbaum    schedule 06.08.2015

  1. В первом запросе вы специально ищете в текстовом поле, а во втором - нет.

  2. А во втором вы упомянули hl.fl, что означает «Указывает список полей для выделения. Принимает список полей, разделенных запятыми или пробелами, для которых Solr должен генерировать выделенные фрагменты. Если оставить пустым, выделяет поле поиска по умолчанию»

Попробуйте еще раз, внеся изменения...

http://localhost:8983/solr/default/select?q=text:software&start=0&rows=10&fl=id,score,title&wt=json&hl=on&hl.fragsize=200

person Abhijit Bashetti    schedule 29.07.2015
comment
Это возвращает: {"responseHeader":{"status":400,"QTime":2,"params":{"hl.fragsize":"200","fl":"id,score,title","start":"0","q":"text:software","wt":"json","hl":"on","rows":"10"}},"error":{"msg":"undefined field text","code":400}} - person Dan Tenenbaum; 29.07.2015
comment
не могли бы вы поделиться файлом schema.xml, использованным для вашей коллекции? - person Abhijit Bashetti; 30.07.2015
comment
Он находится по адресу gist.github.com/dtenenba/367ccf577651d953150a. Обратите внимание, что это мой /etc/solr/conf/schema.xml; В моей коллекции нет собственного schema.xml. Я создал его с помощью bin/solr create_core -c default. - person Dan Tenenbaum; 30.07.2015