我有一组要在查询时映射到特定短语的术语。为此,我正在使用solr.SynonymFilterFactory
。这是schema.xml
<fieldType name="text_lc" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
</analyzer>
</fieldType>
这里是synonyms.txt
cat, bat, mouse => small animals
以下是分析结果:
问题是小动物作为单独的记号出现,而我想整体搜索“小动物”。
如何在solr中将多词同义词作为单个实体?
答案 0 :(得分:1)
new SynonymGraphFilter has specific functionality to handle multi word synonyms,因为旧的同义词过滤器无法正确处理这些问题。
仍然很难找到多词同义词,但是新的过滤器至少具有针对多词同义词的策略。
参考指南中的示例:
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.SynonymGraphFilterFactory" synonyms="mysynonyms.txt"/>
<filter class="solr.FlattenGraphFilterFactory"/> <!-- required on index analyzers after graph filters -->
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.SynonymGraphFilterFactory" synonyms="mysynonyms.txt"/>
</analyzer>
请注意FlattenGraphFilterFactory
的要求。