我怎样才能在Solr中使用单向同义词?

时间:2016-12-06 20:17:32

标签: solr lucene

我正在尝试在Solr中实现单向同义词或单向词库(如在Endeca中)。在我搜索摄像机的地方,我也得到了相机的结果,但反之亦然。我尝试在Synonyms.txt中添加以下内容,但似乎无法正常工作,因为它给出了奇怪的结果:

camcorder =>相机

我的schema.xml是:

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"  multiValued="true">
    <analyzer type="index">
        <tokenizer class="solr.ClassicTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.ClassicFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15"/>
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.ClassicTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.ClassicFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
    </analyzer>
</fieldType>

2 个答案:

答案 0 :(得分:3)

我认为你在寻找的是:

camcorder => camera, camcorder

如果您没有在右侧包含摄像机,则摄像机如果您搜索摄像机&#34;则不会返回任何结果。

答案 1 :(得分:1)

由于您只是在编制索引时(在您定义了SynonymFilter的位置)扩展了同义词,因此{}进入的每个文档的camcorder都会更改为camera。如果您在查询时没有进行相同的扩展,Solr仍会搜索camcorder(因为没有为查询分析链定义SynonymFilter)。索引中没有camcorder标记,因此不会有任何标记。

在查询时以及索引时,您必须扩展同义词,以便通过单向同义词实现您想要的目标。