根据第一个单词上的匹配文档建议多个单词

时间:2014-02-20 11:58:43

标签: solr

我正在使用Solr 4.6而我正在尝试让solr根据多个单词给我自动完成建议。我使用spellcheck.collat​​e实现了这一点,但我现在面临的问题是它返回与搜索无关的建议(搜索基于汽车)

Example: Searching for something like "audi fo" will return audi + all the matching
items that have "fo" in them, something like audi ford, audi focus and so on.

每个文档都有多个字段(品牌,型号,身体颜色等)。我想要实现的是让solr仅返回匹配文档中基于第一个单词匹配字段的第二个单词的建议。

我想我可以使用Solr库在Java中编写自定义组件并插入它,但我猜测必须有一种更简单的方法来实现这一点,使用Solr已经知道的。

注意:我已经研究了几天的Solr文档,这是迄今为止我能找到的最好的。

solr.config

<searchComponent name="com_test" class="solr.SpellCheckComponent">
 <lst name="spellchecker">
   <str name="name">com_test</str>
   <str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
   <str name="lookupImpl">org.apache.solr.spelling.suggest.fst.FSTLookup</str>
   <str name="field">com_test</str>
   <str name="buildOnCommit">true</str>
 </lst>
</searchComponent>
<requestHandler class="org.apache.solr.handler.component.SearchHandler" name="/com_test">
  <lst name="defaults">
    <str name="spellcheck">true</str>
    <str name="spellcheck.dictionary">com_test</str>
    <str name="spellcheck.count">10</str>
    <str name="spellcheck.collate">true</str>
  </lst>
  <arr name="components">
    <str>com_test</str>
  </arr>
</requestHandler>

schema.xml中

<field name="com_test" type="com_test" indexed="true" stored="false" multiValued="true"/>

<fieldType name="com_test" class="solr.TextField" positionIncrementGap="100">
   <analyzer>
      <tokenizer class="solr.KeywordTokenizerFactory"/>
      <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
 </fieldType>

1 个答案:

答案 0 :(得分:0)

在谈到数据源和配置时,现有的solr建议器非常基础。无论是使用字段还是自定义词典,都可以由您来制作相应的源。 如果您希望建议者能够生成正确的短语,最好的方法是将这些短语/单词元组编入索引。