在我的solr字段中配置了以下manned,
<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>
这适用于我不想要阻止的情况,但现在有另一个用例导致问题,人们开始寻找以下组合,
常春藤:在这种情况下,只有常春藤才会返回结果,而预期的结果将是。我知道这是因为停止词,但是实现这一点的方法。例如,如果他们在引号内搜索“常春藤”,那么它应该起作用。
(妈妈和我)或(“妈妈和我”):在这种情况下也是&amp;被删除或在声明的某些部分包括妈妈和我的结果都会被退回。
如果只有新数据以正确的方式运行但无法重新索引,我很好。另外,更改schema.xml文件会触发完全复制吗?
的问候,
AYUSH
答案 0 :(得分:0)
您正在使用空白区域标记器。 所以“常春藤”被分成两个字。
你可以使用一个不那么激进的标记化,然后使用WordDelimiterFilterFactory
来激活protected="protwords.txt"
选项,你可以将“常春藤”设置为受保护的单词,这样solr就不会将其标记为
http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.WordDelimiterFilterFactory