我使用Solr索引数据。我想在搜索结果中突出显示匹配的关键字。突出显示是不一致的 例如。如果搜索关键字是'alonso'。
突出显示的实例是: 的阿隆索下,fernando_的阿龙下,*的 #Alonso * MeetVettel
非highlightes实例是: @fernandoalonso,www.alonsodriver.com
谁能告诉我为什么会这样?
我正在使用此配置 -
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<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="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
</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="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
</analyzer>
</fieldType>
答案 0 :(得分:0)
使用WhitespaceTokenizerFactory和WordDelimiterFilterFactory,单词将在空白和下划线上拆分,然后进行搜索。这个TokenizerFactory就像fernandoalonso这样的单词不会以相同的方式分割。为了获得关于fernandoalon的点击和亮点,你必须使用ngrams将整个单词变成许多较小的单词,这些单词是该单词的一部分。像nso,onso,lonso,alonso。
找到包括使用ngrams的好答案