1

我正在研究从 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 中以不同的方式指定它们吗?

4

0 回答 0