我正在研究从 SolR 3.6 到 4.0 的迁移。
我开发了一个不超过 2500 个文档的小型系统。此外,我已经开发了超过 4100 项测试,以确保在每次更改时,系统的功能都不会恶化。
对于这次迁移,我保留了 Solr 4.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 中以不同的方式指定它们吗?