0
时,我有以下字段类型:Apache Solr实现 - 如何防止分裂搜索短语
<fieldType name="textfield" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<charFilter class="solr.HTMLStripCharFilterFactory"/>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.TrimFilterFactory"/>
<filter class="solr.LengthFilterFactory" min="3" max="30"/>
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1"
catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LengthFilterFactory" min="3" max="30"/>
<!--<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>-->
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.TrimFilterFactory" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1"
catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
</analyzer>
</fieldType>
我的问题是,使用引号的词组搜索时,结果都是一样的,如果没有引号,所以如果我搜索让我们说:
abc。 8
这将显示相同的结果
“abc.8”
并且期间还可以分裂文本吗?
换句话说,我只是想在查询文本被引用时搜索短语。 Thx。
有没有一种方法可以避免在查询中被标记的短语?我的意思是,当搜索“abc.8”时,我想将它看作是5个字符的单个标记,所以8不会从查询中消除。 – CCC
这会让搜索非常困难,因为索引中的标记仍然会被标记。您可以使用单个标记'abc创建查询。 8',但你的索引仍然只有标记'abc.'。如果你希望能够找到“8”的标记,我会猜测最小长度根本就不会对你有任何帮助。 – femtoRgon
如果您确实需要支持不同的标记化方案,最好的解决方案是使用不同名称的字段为两个不同版本的文本编制索引。 – femtoRgon