如何在solr中将多词同义词作为单个实体?

时间:2018-09-19 11:55:53

标签: solr

我有一组要在查询时映射到特定短语的术语。为此,我正在使用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

以下是分析结果:

enter image description here

问题是小动物作为单独的记号出现,而我想整体搜索“小动物”。

如何在solr中将多词同义词作为单个实体?

1 个答案:

答案 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的要求。