根据术语的提升列表更改solr建议响应

时间:2014-05-22 20:57:43

标签: solr solrj autosuggest solr4 solrcloud

我要求根据每个术语的提升值在solr 4.7.x自动建议响应中提高一个术语/ s这个提升是针对文件中定义的一些术语(并且业务可以管理此文件) 。

我有一个扩展现有响应编写器或编写自定义插件的设计 例如:mydic.suggest文件看起来像
鹰40.00 点击20.00 托管30.00l

当我开始输入

- >查询1:"(http://example.com/solr/collection1/suggest?q=eag)"

原始solr响应将(根据我的索引) 建议: {
渴望,

}

因此建议响应应更改为
建议:{
鹰,
渴望
}

- >查询2:"(http://example.com/solr/collection1/suggest?q=ho)" 原始Solr响应将(基于我的索引)

建议: {     假期,
    冬青,
    家,
    故乡,
    跳,
    希望,
    托管
}

所以建议的回应应该改为 - 观察术语"托管"来吧

建议:{     托管,
    假期,
    冬青,
    家,
    故乡,
    跳,
    希望
    }

这是否适用于自定义solr插件?

我对Dic的建议处理程序看起来像::

<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>
      <!-- Alternatives to lookupImpl: 
           org.apache.solr.spelling.suggest.fst.FSTLookupFactory   [finite state automaton]
           org.apache.solr.spelling.suggest.fst.WFSTLookupFactory [weighted finite state automaton]
           org.apache.solr.spelling.suggest.jaspell.JaspellLookupFactory [default, jaspell-based]
           org.apache.solr.spelling.suggest.tst.TSTLookupFactory   [ternary trees]

      <str name="comparatorClass">freq</str>-->
      <str name="sourceLocation ">./../suggest/autoSuggestDic.txt</str>
      <str name="field">textSuggest</str>  <!-- the indexed field to derive suggestions from -->
      <str name="buildOnCommit">true</str>
      <bool name="exactMatchFirst">true</bool>
    </lst>
     <!-- specify a fieldtype using keywordtokenizer + lowercase + cleanup -->
    <str name="queryAnalyzerFieldType">text_general</str>
  </searchComponent>
  <requestHandler class="org.apache.solr.handler.component.SearchHandler" name="/suggest">
    <lst name="defaults">
      <str name="name">suggest</str>
      <str name="spellcheck">true</str>
      <str name="spellcheck.dictionary">suggest</str>
      <str name="spellcheck.onlyMorePopular">false</str>
      <str name="spellcheck.count">15</str>   
      <str name="spellcheck.collate">true</str>
    </lst>
    <arr name="components">
      <str>suggest</str>
    </arr>
  </requestHandler>

1 个答案:

答案 0 :(得分:0)

我现在使用solr 4.7同时使用词典支持和索引词典。

我的自定义建议处理程序构建HighFrequencyDictionary(使用我的索引构建)实例和FileDictionary(这是我提到的字典文件

solrConfig.xml中的

./../ autoSuggestDic.dic)实例

在build(...)方法中 和自定义getSuggestions(SpellingOptions选项){..}方法使用这两个词典作为建议。

这类似于提升您的建议条款,以提升您的搜索结果。