Java ApacheSolr-如何在搜索短语时防止拆分
我有以下字段类型:Java ApacheSolr-如何在搜索短语时防止拆分,java,solr,lucene,Java,Solr,Lucene,我有以下字段类型: <fieldType name="textfield" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <charFilter class="solr.HTMLStripCharFilterFactory"/> <tokenizer class="solr.WhitespaceTokenizerFactory"/
<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>
我遇到的问题是,当使用引号搜索短语时,结果与没有引号的结果相同,因此如果我搜索,让我们说:美国广播公司。8
这将显示与
相同的结果 “abc.8”
这一时期是否也可以分割文本 换句话说,我只想在引用查询文本时搜索短语。
Thx.您已将
长度过滤器工厂
合并到分析仪中,最小长度为3。标记8
的长度为1,因此该筛选器将从索引和查询中删除该标记。您的查询语法是正确的,如果两个术语都被索引,那么将按照您指定的方式执行短语查询。有没有办法避免在查询中标记短语?我的意思是,在搜索“abc.8”时,我希望将其视为5个字符的单个标记,因此8不会从查询中删除。这将使搜索变得非常困难,因为索引中的标记化仍然是标记化的。您可以使用单个标记创建查询abc。8
,但您的索引仍然只有令牌abc.
。如果您希望能够找到标记8
,我想最小长度对您没有任何好处。如果您确实需要支持不同的标记化方案,最好的解决方案是在不同名称的字段中索引两个不同版本的文本。