#solr #lucene
Вопрос:
Я использую Apache Solr 8.6 для индексирования документов с помощью инструмента POST в Linux, как указано в справочном руководстве Apache Solr.
Команда POST Tool
bin/post -c testcore /testdocs/
Документы успешно индексируются. Теперь, когда я искал строку, например: привет в пользовательском интерфейсе администратора Solr, она возвращает соответствующие документы.
Теперь я хочу выделить эту строку «привет», которая присутствует внутри документа в качестве содержимого. Но я не могу добиться того же самого. Я попытался включить подсветку и ввести text_* в hl.fl=text_*. И все же я не могу добиться результата. Однако, если эта строка поиска присутствует в любом из индексированных полей, она правильно выделяется в результатах.
В managed-schema.xml я добавил содержимое и текстовые поля, как показано ниже.
<field name="content" type="text_general" indexed="false" stored="true" multiValued="false"/>
<field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>
Я попытался выполнить следующие запросы:
http://localhost:8983/solr/testcore/select?q=_text_:*hello*amp;hl=trueamp;hl.fl=contentamp;hl.usephrasehighlighter=true
http://localhost:8983/solr/testcore/select?q=_text_:*hello*amp;hl=trueamp;hl.fl=text_*amp;hl.usephrasehighlighter=true
Буду признателен, если вы сможете вести меня дальше.
Изменить: В соответствии с рекомендацией
Я изменил поля содержимого и текста, как показано ниже, но это тоже не работает. Это означает, что когда я ищу текстовую строку, она не выделяет искомую строку внутри документа в качестве содержимого.
<field name="content" type="text_general" indexed="true" stored="true" multiValued="false"/>
<field name="text" type="text_general" indexed="true" stored="true" multiValued="true"/>
Комментарии:
1. Итак, подсветка работает с
hl.fl=text_*
, но не сhl.fl=content
(это не очень понятно) ? Как определяются эти поля (поле тип поля) ?2. Нет, оба запроса не работают … я пробовал оба способа. Я определил содержимое и текстовые поля в управляемом schema.xml как <имя поля=тип»содержимое»=»text_general» проиндексировано=»ложь» сохранено=»истина» многоЗначно=»ложь»/> <имя поля=тип»содержимое»=»text_general» проиндексировано=»ложь» сохранено=»истина» многоЗначно=»ложь»/><имя поля=»текст» тип=»text_general» проиндексировано=»истина» сохранено=»ложь» многоЗначно=»истина»/>
3. Хорошо, пожалуйста, отредактируйте свой вопрос, чтобы он был понятен каждому (он не читается в комментариях).
4. Я обновил managed-schema.xml фрагмент поля в вопросе
5. Хорошо, вам нужно настроить и
indexed="true"
то, и другое, иstored="true"
чтобы подсветка работала на ваших полях, вот в чем дело.
Ответ №1:
Наконец, проблема решена путем изменения поля _text _ в manage-schema.xml файл. Я изменил значение stored=»false» на stored=»true», как показано в приведенном ниже синтаксисе.
<field name="_text_" type="text_general" indexed="true" stored="true" multiValued="false"/>
Затем я перезапустил solr и переиндексировал документ.
Теперь я запустил запрос, чтобы выделить текст, как показано ниже. В этом запросе я использовал hl=on amp; hl.fl=_text _, чтобы выделить комментарий.
Запрос для выделения искомой строки
http://localhost:8983/solr/testcore/select?q=_text_:*hello*amp;hl=onamp;hl.fl=_text_