0

在我的 solr 字段中配置以下载人,

<fieldType name="text_exact" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
 <analyzer type="index">
    <charFilter class="solr.HTMLStripCharFilterFactory"/>
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/>
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0" splitOnNumerics="0" preserveOriginal="1" types="wdfftypes.txt"/>
    <filter class="solr.LowerCaseFilterFactory"/>
 </analyzer>
 <analyzer type="query">
   <tokenizer class="solr.WhitespaceTokenizerFactory"/>
   <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/>
   <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0" splitOnNumerics="0" preserveOriginal="1" types="wdfftypes.txt"/>
   <filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>

这适用于我不想要词干的情况,但现在有另一个导致问题的用例,人们开始寻找以下组合,

  • The Ivy :在这种情况下,只返回 ivy 的结果,而预期的结果是 The。我知道这是因为停用词,但这是实现这一目标的方法。例如,如果他们在引号内搜索“常春藤”,则应该可以。

  • (Mom & Me) OR ("mom and me"):在这种情况下,& 也会被删除,或者在语句的某些部分同时包含 mom 和 me 的结果被返回。

如果只有新数据以正确的方式运行但无法重新索引,我就可以了。此外,更改 schema.xml 文件会触发完整复制吗?

问候,
阿尤什

4

1 回答 1

0

您正在使用空白标记器。所以“常春藤”被分成两个词。

您可以使用不那么激进的标记化 an 后跟WordDelimiterFilterFactory以激活protected="protwords.txt"选项,您可以在其中将“常春藤”设置为受保护的单词,这样 solr 就不会对其进行标记化。

http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.WordDelimiterFilterFactory

于 2013-01-06T09:13:28.223 回答