我怎么能在Solr中有一个单向同义词?

我怎么能在Solr中有一个单向同义词?,solr,lucene,Solr,Lucene,我正试图在Solr中实现单向同义词或单向同义词库(如Endeca)。在搜索摄像机的地方,我也会得到摄像机的结果,但反之亦然。我尝试在Synonyms.txt中添加以下内容,但似乎不起作用,因为它会产生奇怪的结果: 摄像机=>摄像机 我的schema.xml是: <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true"> <ana

我正试图在Solr中实现单向同义词或单向同义词库(如Endeca)。在搜索摄像机的地方,我也会得到摄像机的结果,但反之亦然。我尝试在Synonyms.txt中添加以下内容,但似乎不起作用,因为它会产生奇怪的结果:

摄像机=>摄像机

我的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>

由于您在索引时仅扩展同义词(定义了同义词过滤器),因此对于传入的每个文档,
摄像机
将更改为
摄像机
。当您在查询时没有进行相同的扩展时,Solr仍将搜索
摄像机
(因为没有为查询分析链定义同义词过滤器)。索引中没有
摄像机
标记,因此不会命中


在查询和索引时,您必须扩展同义词,以实现单向同义词的目的。

由于您仅在索引(定义了同义词过滤器)时扩展同义词,
摄像机
将为输入过程中的每个文档更改为
摄像机
。当您在查询时没有进行相同的扩展时,Solr仍将搜索
摄像机
(因为没有为查询分析链定义同义词过滤器)。索引中没有
摄像机
标记,因此不会命中


在查询和索引时,您必须扩展同义词,以实现单向同义词的目的。

我认为您需要的是:

camcorder => camera, camcorder

如果您未在右侧包含camcorder,则在搜索“camcorder”时camcorder不会返回任何结果

我想你要找的是:

camcorder => camera, camcorder

如果您未在右侧包含camcorder,则在搜索“camcorder”时camcorder不会返回任何结果

您忘了发布schema.xml,这也为我们提供了更多关于您得到了什么结果以及您期望得到什么的信息。P.s
写作需要尽快回答P
不会尽快给你答案如果没有这个配置,我会单独搜索,我会分别得到20和30个结果。在某种程度上,对摄像机的同义词库搜索应该给我50个结果,而对摄像机的搜索仍然应该给我30个结果。你忘了发布你的schema.xml也给了我们更多关于你得到了什么结果以及你期望得到什么的信息。P.s
写作需要尽快回答P
不会尽快给你答案如果没有这个配置,我会单独搜索,我会分别得到20和30个结果。从某种意义上说,同义词库搜索摄像机应该给我50个结果,搜索摄像机应该仍然给我30个结果。我按照你的答案做了修改。但我还是得到了同样数量的结果。如果没有同义词配置(camcorder=>camera),我将分别搜索,得到20和30个结果。在某种程度上,同义词搜索摄像机应该给我50个结果,搜索摄像机仍然应该给我30个结果。如果这是你想要的,那么你需要在索引时将
摄像机
重写为
摄像机
摄像机
,而不是反过来。这样,任何包含摄像机的文档都将同时与摄像机和摄像机相关联,而摄像机将只与摄像机相关联。我根据您的回答做了更改。但我还是得到了同样数量的结果。如果没有同义词配置(camcorder=>camera),我将分别搜索,得到20和30个结果。在某种程度上,同义词搜索摄像机应该给我50个结果,搜索摄像机仍然应该给我30个结果。如果这是你想要的,那么你需要在索引时将
摄像机
重写为
摄像机
摄像机
,而不是反过来。这样,任何包含摄像机的文档都将与摄像机和摄像机相关联,而摄像机将仅与摄像机相关联。