Rails - Как использовать solr SuggestComponent с солнечным пятном

Я использую sunspot_rails gem для использования библиотеки поиска Solr с Rails. Я пытаюсь показать предложения для пользователей, когда они вводят условия поиска в моем приложении, как это

введите здесь описание изображения

Но я не могу заставить SuggestComponent работать с sunspot. Я сослался на это руководство по компоненту предложений и добавил следующее в solrconfig.xml

  <searchComponent name="suggest" class="solr.SuggestComponent">
    <lst name="suggester">
      <str name="name">mySuggester</str>
      <str name="lookupImpl">AnalyzingInfixLookupFactory</str>
      <str name="dictionaryImpl">DocumentDictionaryFactory</str>
      <str name="field">name</str>
      <str name="weightField">price</str>
      <str name="contextField">cat</str>
      <str name="suggestAnalyzerFieldType">string</str>
      <str name="buildOnStartup">false</str>
    </lst>
  </searchComponent>

  <requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
    <lst name="defaults">
      <str name="suggest">true</str>
      <str name="suggest.count">10</str>
    </lst>
    <arr name="components">
      <str>suggest</str>
    </arr>
  </requestHandler>

Когда я пробую контекстную фильтрацию, предлагаю запрос

http://localhost:8982/solr/development/suggest?suggest=true&suggest.build=true&suggest.dictionary=mySuggester&wt=json&suggest.q=c&suggest.cfq=memory

получаю пустой ответ

{
   "responseHeader":{
      "status":0,
      "QTime":43
   },
   "command":"build",
   "suggest":{
      "mySuggester":{
         "c":{
            "numFound":0,
            "suggestions":[

            ]
         }
      }
   }
}

Любая идея, что я делаю неправильно? Может ли кто-нибудь помочь мне, как использовать SuggestComponent с камнем солнечных пятен? заранее спасибо


person Tony Vincent    schedule 24.01.2018    source источник
comment
Кажется, у вас нет ни одного документа с полем cat, для которого установлено значение "memory". Что вы получите, если удалите suggest.cfq=memory из запроса?   -  person EricLavault    schedule 24.01.2018
comment
{"responseHeader":{"status":0,"QTime":6},"command":"build","suggest":{"mySuggester":{"c":{"numFound":0,"suggestions":[]}}}} удаление momory ничего не меняет @EricLavault   -  person Tony Vincent    schedule 24.01.2018


Ответы (1)


Вам не нужно использовать компонент предложения solr. вам просто нужно убедиться, что ваш solr возвращает результаты для частичного поиска по ключевым словам, что можно сделать, добавив пограничные фабрики фильтров Ngram или Ngram (для этого множество руководств), в то время как вы делаете это, убедитесь, что вы используете пакет exec susnspot:solr:start так как это будет использовать конфигурацию, сохраненную в вашей кодовой базе. Затем вы можете использовать Twitter typehead для реализации автозаполнения.

person guarav rakheja    schedule 22.03.2018