SOLRクエリの各用語に対して「startsWith」検索を有効にしたいだけでなく、フレーズ検索も実行できるようにしたい(引用符で指定)。プレフィックス検索では、最初にサフィックス「*」を追加しました。このソリューションでは、プレフィックス検索とフレーズ検索の両方が可能ですが、ワイルドカード検索であり、ワイルドカード検索では用語が分析されないため、このソリューションは好きではありません。
そのため、インデックス作成時にのみ 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 を使用すると、強調表示がうまく機能しないことに気付きました。