Solr SuggestComponent - Создание словарей на основе определенных фильтров? - PullRequest
0 голосов
/ 13 февраля 2019

В настоящее время я использую компонент подсказки solr для функции автозаполнения.Теперь, в соответствии с разрешениями пользователя и тем, в какой части сайта я нахожусь, я хочу предложить пользователю различные предложения.Теперь я предположил, что можно легко рассмотреть только определенные явные записи для построения моего словаря (то есть: dict1 создается только из записей, где type = t1 и locale = en, dict 2, где type = t1 и locale = de, dict3, где type= t2 и locale = en и т. д.).Но я не могу понять, где я мог бы сделать такую ​​вещь.Система работает solr 4.6.

Знаете ли вы о каком-либо решении или возможном обходном пути?

В настоящее время я не могу обновить solr в системе или изменить способ индексации документов отдельноиз конфигурации Solr, поэтому, к сожалению, фильтрация контекста не доступна для меня.Это было бы только последним средством, если больше ничего не работает.

1 Ответ

0 голосов
/ 14 февраля 2019

Поскольку вы используете старый Solr 4.6 , который не имеет фильтрации контекста или даже нескольких словарей, вам нужно будет указать свои словари aka SearchComponent для каждой записи

<searchComponent class="solr.SpellCheckComponent" name="suggest-en">
   <lst name="spellchecker">
-->
<!--
<str name="name">suggest</str>
<str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
<str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str>
<str name="field">name</str>  <!-- the indexed field to derive suggestions from
<float name="threshold">0.005</float>
<str name="buildOnCommit">true</str>
<str name="sourceLocation">american-english</str>
--> </lst>
</searchComponent>

И затем определите обработчики запросов, например:

<requestHandler class="org.apache.solr.handler.component.SearchHandler"
name="/suggest-en">
   <lst name="defaults">
      <str name="spellcheck">true</str>
      <str name="spellcheck.dictionary">suggest-en</str>
      <str name="spellcheck.onlyMorePopular">true</str>
      <str name="spellcheck.count">5</str>
      <str name="spellcheck.collate">true</str>
   </lst>
   <arr name="components">
      <str>suggest</str>
   </arr>
</requestHandler>

Обходной путь здесь будет таким, что вам нужно будет указать suggest-en, suggest-de и все другие типы обработчиков запросов, ипозже укажите, что клиенты зависят от своего профиля для правильного обработчика запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...