我正在尝试在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>
答案 0 :(得分:3)
我认为你在寻找的是:
camcorder => camera, camcorder
如果您没有在右侧包含摄像机,则摄像机如果您搜索摄像机&#34;则不会返回任何结果。
答案 1 :(得分:1)
由于您只是在编制索引时(在您定义了SynonymFilter的位置)扩展了同义词,因此{}进入的每个文档的camcorder
都会更改为camera
。如果您在查询时没有进行相同的扩展,Solr仍会搜索camcorder
(因为没有为查询分析链定义SynonymFilter)。索引中没有camcorder
标记,因此不会有任何标记。
在查询时以及索引时,您必须扩展同义词,以便通过单向同义词实现您想要的目标。