有人可以帮我突出我搜索“汽车”时遇到的问题,它突出了“汽车”,“汽车”的预期行为,以及所有以汽车开头的字样,例如“卡片”,运营商等。
用户要求我们不想突出显示以'car'开头的任何内容?这是我的schema.xml
<analyzer type="index">
<charFilter class="solr.PatternReplaceCharFilterFactory"
pattern="[({.,\[\]})]" replacement=" "/>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" preserveOriginal="1" catenateAll="1" />
<filter class="solr.ASCIIFoldingFilterFactory" preserveOriginal="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="15"/>
<filter class="solr.SnowballPorterFilterFactory" language="English" />
答案 0 :(得分:1)
问题在于,当您使用edgengramfilter为cards
建立索引时,您会获得令牌c
,ca
,car
,card
和{ {1}}。当您正在搜索cards
和时,该字段具有相同的edgengramfilter ,cars
c ll search for any document matching any of the tokens
ca ,
car {{ 1}} cars`。
解决方案是在索引时删除edgengramfilter(这样就不会对,
,, and
或c
产生影响,或者使用其他字段进行突出显示(使用ca
)只应用了标准的标记化/空白标记化,以及可能的一个词干分析器(我会使用car
来删除多个指示符)。