从solr 3.6迁移到4.0时同义词的不同行为
我正在研究从Solr3.6到4.0的迁移 我开发了一个不超过2500个文档的微型系统。此外,我已经开发了4100多个测试,以确保在每次更改时,系统的功能不会恶化 对于这次迁移,我保留了Solr4.0的默认设置,只是添加了我自己的fieldType(我在schema.xml和solrconfig.xml中看到了很多新设置) 因此,在没有同义词的第一次运行中,版本4.0和3.6之间的差异只是4100中的一个句子(在4.0中,这个短语比3.6更好)。然而,如果我包括同义词,偏差会变得更加明显,在4.0时会有更糟糕的结果 我的字段类型如下:从solr 3.6迁移到4.0时同义词的不同行为,solr,lucene,solrj,synonym,solr4,Solr,Lucene,Solrj,Synonym,Solr4,我正在研究从Solr3.6到4.0的迁移 我开发了一个不超过2500个文档的微型系统。此外,我已经开发了4100多个测试,以确保在每次更改时,系统的功能不会恶化 对于这次迁移,我保留了Solr4.0的默认设置,只是添加了我自己的fieldType(我在schema.xml和solrconfig.xml中看到了很多新设置) 因此,在没有同义词的第一次运行中,版本4.0和3.6之间的差异只是4100中的一个句子(在4.0中,这个短语比3.6更好)。然而,如果我包括同义词,偏差会变得更加明显,在4.0
<fieldType name="text_es_lemma" class="solr.TextField" positionIncrementGap="100">
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.lnk" ignoreCase="true" expand="false"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.lnk" format="snowball" enablePositionIncrements="true"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="myownlibrary.solr.analysis.SpanishLemmaFilterFactory" dictionary="lang/avatar_dictionary/adj_num_ord-lex.src,lang/avatar_dictionary/basic-lex.src" ignoreCase="true"/>
</analyzer>
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.lnk" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.lnk" format="snowball" enablePositionIncrements="true"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="myownlibrary.solr.analysis.SpanishLemmaFilterFactory" dictionary="lang/avatar_dictionary/adj_num_ord-lex.src,lang/avatar_dictionary/basic-lex.src" ignoreCase="true"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory" />
</analyzer>
</fieldType>
具有同义词的文件在两个版本中都是相同的
同义词在4.0和3.6中的用法有什么不同吗?我是否必须在4.0中以不同的方式指定它们?为什么要在两侧使用同义词FilterFactory(索引时间和查询时间)。通常同义词FilterFactory只使用一次,可以是索引时间,也可以是查询时间,但不能同时使用两者。@randroid,afaik建议的配置是在两侧使用同义词,附带条件是在索引时使用expand=true,在查询时使用expand=false。我不确定在两侧使用它有什么好处。例如,我们有“TV,TV,TV”,我们索引术语“TV”,然后索引值将包含所有4个术语(电视、电视、电视、电视),现在当我们搜索“电视”时,在查询时分析期间,它将从同义词中选择第一个项目(电视),因为我们有expand=false。如果我们在查询时没有同义词过滤器工厂,那么它将只匹配查询词,这应该可以工作,因为我们在索引时扩展了同义词。