solr同义词未被解析

时间:2011-09-29 09:52:06

标签: solr synonym

我正在使用solr中的过去搜索来制作自动推荐功能。 Synonyms.txt包含常见拼写错误/拼写错误等列表。它设置为在索引上运行并使用管理员中的anaysis工具我可以看到它正常工作 - 但它似乎不适用于实时数据。

Field type :
<field name="suggest_ngrams" type="text_ngram" indexed="true" stored="false" multiValued="true" />

Schema:
<fieldType name="text_ngram" class="solr.TextField" positionIncrementGap="100">
 <analyzer type="index">
    <tokenizer class="solr.KeywordTokenizerFactory"/>
     <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_en.txt" enablePositionIncrement="true"/>
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/>
 </analyzer>
 <analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>   
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_en.txt" enablePositionIncrement="true"/>
 </analyzer>

and an example of synonyms.txt
watch, watches, watche, watchs => watch

因此,在索引时,我希望“watche”被“watch”取代 - 这似乎并非如此(即使分析工具说它正在做什么。

要清楚,如果我查询solr(?q = watc),结果中会出现“watche”这个短语

任何想法或见解都会受到赞赏,因为我认为一切都设置正确

由于

2 个答案:

答案 0 :(得分:1)

如果我的问题是正确的: - 同义词仅在索引时使用,不会影响存储的值 所以你在分析中看到的是索引时间值,它似乎工作得很好 当您查询solr并且它与此结果匹配时,结果将仅返回“watche”,因为这是存储的原始值。 存储的值永远不会被修改,并按原样存储并在响应中返回。

请澄清我是否弄错了。

答案 1 :(得分:0)

正如@Jayendra所描述的那样,solr不会改变存储值。因此,你应该找到另一种处理这个障碍的方法。 在我的情况下,我想出了一个使用facet的解决方案。如果您在该字段上进行分面,则会收到索引值(已映射)。

另一个解决方案是您可以在将数据加载到Solr之前,在单独的流程中将过滤器应用于数据