需要帮助apache solr建议者的短语

时间:2015-03-27 07:17:28

标签: search solr autocomplete autosuggest search-suggestion

我正在尝试在我的应用程序中使用suggeter

示例:我的文档如下

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

如果我搜索“apa”,则前两个结果显示为建议和 如果搜索字符串是“apache so”,则只有第一个显示为预期的建议

但是

如果我搜索“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"/>
	<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

请帮助

1 个答案:

答案 0 :(得分:0)

您正在使用KeywordTokenizerFactory将整个字符串视为单个流。因此,在您的情况下,第一个文档将被编入索引

apache solr version 4.2

由于您的自动推荐功能已启用,因此您的第一个查询apac&amp;其他以相同前缀apac开头的其他人可以匹配索引中以条目开头的条目(因为您已启用suggest

如果您希望在文字中匹配个别字词,则应考虑使用其他代币,例如WhitespaceTokenizerFactory

更多详情:https://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.KeywordTokenizerFactory