任何人都有在solr中同义词搜索多关键字的最佳方法吗?

时间:2013-06-21 06:09:20

标签: search solr synonym

我想在solr中使用同义词搜索多关键字。 但它不正确。

我在synonym.txt中为“multerm”设置了同义词“multi term”。而且我希望Solr为“multerm”创建查询短语,就像“field:”多项“〜0但是”字段:multi |字段:术语“。所以​​不能亲密搜索多项同义词。

任何人都有最好的方法在Solr中进行多项同义词搜索?请帮帮我〜

1 个答案:

答案 0 :(得分:1)

以下是我处理多词同义词的方法。在我的schema.xml中,fieldType定义如下所示:

<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" tokenizer="solr.KeywordTokenizerFactory"/>

<fieldType name="custom_text_general" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
        <!-- We will use synonyms only at index time to keep querying fast-->
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" tokenizer="solr.KeywordTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.SnowballPorterFilterFactory" language="English" />
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
        <!-- We will use synonyms only at index time to keep querying fast
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        -->
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.SnowballPorterFilterFactory" language="English" />
    </analyzer>
</fieldType>

需要注意的事项:

  • 我只在索引时使用同义词,以便快速查询。
  • 我添加了KeywordTokenizerFactory,它将整个字段视为单个标记,并且不会拆分多字同义词
  • 我添加了expand =“true”。如果expand为true,则同义词将扩展为所有等效的同义词。如果为false,则所有等效的同义词将缩减为列表中的第一个。
  • 查询时间同义词已注释掉。