我想爲SOLR查詢中的每個詞啓用「startsWith」搜索,但也能夠執行詞組搜索(用引號引用)。 對於前綴搜索,我首先添加了後綴「*」。該解決方案允許前綴搜索和詞組搜索,但我不喜歡這種解決方案,因爲它是通配符搜索,通配符搜索不會分析術語。對Solr中的EdegeNGram分析和詞組搜索的支持3.4.0
所以我只在索引上啓用了EdgeNgramFilterFactory。前綴搜索工作正常,但確切的短語搜索不再工作。
是否有人知道如何啓用短語搜索,即使啓用了EdgeNgram?
謝謝!
這裏是schema.xml中
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="50" side="back" />
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="50" side="front" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>
我也注意到,使用WordDelimiterFilterFactory當高亮不能很好地執行了。
它可以幫助您是否發表您的schema.xml中,我們可以看到你在做什麼。 –