2015-03-27 3 views
0

Я пытаюсь использовать suggeter в моем приложениинужна помощь в Apache Solr Suggester для фраз

пример: у меня есть документы, как показано ниже

apache solr version 4.2 
 
apache hadoop version 2 
 
cassendra nosql db 
 
mysql rdbms

если я искать " apa "первые два результата показаны как предложение и , если строка поиска" apache so "только 1-й пример показан как предположение, которое ожидается как ожидалось

Но

если я искать «Solr» никакого результата не будет показано на предложение (я бы ожидать Apache Solr версии 4.2)

Мой запрос является

http://localhost:8983/solr/colletion/suggest?wt=json&indent=true&spellcheck=true&spellcheck.q=solr

ниже мой тип поля

<fieldType name="text_general2" class="solr.TextField" positionIncrementGap="100"> 
 
     <analyzer type="index"> 
 
     <tokenizer class="solr.KeywordTokenizerFactory"/> 
 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> 
 
\t <filter class="solr.LowerCaseFilterFactory"/> 
 
     </analyzer> 
 
     <analyzer type="query"> 
 
     <tokenizer class="solr.KeywordTokenizerFactory"/> 
 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> 
 
     <filter class="solr.LowerCaseFilterFactory"/> 
 
     </analyzer> 
 
    </fieldType>

и предложить обработчик запросов в solrconfig.xml является

<searchComponent class="solr.SpellCheckComponent" name="suggest"> 
 
    <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.fst.WFSTLookupFactory</str> 
 
    <str name="field">title2</str> <!-- the indexed field to derive suggestions from --> 
 
     <float name="threshold">0</float> 
 
     <str name="buildOnCommit">true</str> 
 
    </lst> 
 
    </searchComponent> 
 
    <requestHandler class="org.apache.solr.handler.component.SearchHandler" name="/suggest"> 
 
    <lst name="defaults"> 
 
     <str name="spellcheck">true</str> 
 
     <str name="spellcheck.dictionary">suggest</str> 
 
     <str name="spellcheck.onlyMorePopular">true</str> 
 
     <str name="spellcheck.count">8</str> 
 
     <str name="spellcheck.collate">true</str> 
 
    </lst> 
 
    <arr name="components"> 
 
     <str>suggest</str> 
 
    </arr> 
 
    </requestHandler>

мой Solr версия 4,2 CDH 4,7

пожалуйста, помогите

ответ

0

Вы используете KeywordTokenizerFactory, который лечит вся строка как один поток. Так что в вашем случае, первый документ будет индексироваться

apache solr version 4.2 

Поскольку ваши авто предлагают включены, ваш первый запрос apac & других, начиная с той же приставкой apac может соответствовать как записям в индексе, начиная с него (как вы suggest включены)

Если вы хотите, чтобы соответствовать отдельных словам в тексте, вы должны использовать другой Tokenizer, такие как WhitespaceTokenizerFactory.

Подробнее: https://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.KeywordTokenizerFactory

+0

Спасибо за ответ .... Я пробовал. Если я ищу «apa», он даст ответ как «apache». Но мне нужно, когда я ищу «apache so», мне нужен ответ как «apache solr version 4.2», и если я ищу «solr», он также должен вернуть «apache solr version 4.2». – Bhuvan

 Смежные вопросы

  • Нет связанных вопросов^_^