【发布时间】:2014-02-21 02:41:50
【问题描述】:
我正在使用 Solr 4.6,我正在尝试让 solr 根据多个单词给我自动完成建议。我已经使用 spellcheck.collate 实现了这一点,但我现在面临的问题是它返回的建议与搜索无关(搜索基于汽车)
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>
【问题讨论】:
-
你能发布你的相关schema.xml和solrconfig.xml
-
问题是,如果在第一个单词上找到匹配项,则自动完成对第二个单词的效果很好。问题是整理加入了不是来自同一个文档的单词。而且我还没有找到任何可以正确匹配文档的内容。
标签: solr