Solr インデックスからの句読点のストライピングに問題があります。単語の直後に句読点が続く場合、この単語は適切にインデックス化されていません。
たとえば、「hello, John」をインデックス化すると、キーワード「hello」でアセットが検出されなくなりますが、単語「hello」の後のコンマを削除しても問題はありません。
句読点を取り除くと思われる FilterFactory はありますか? 何か案は?
ありがとう、ボグダン。
Solr インデックスからの句読点のストライピングに問題があります。単語の直後に句読点が続く場合、この単語は適切にインデックス化されていません。
たとえば、「hello, John」をインデックス化すると、キーワード「hello」でアセットが検出されなくなりますが、単語「hello」の後のコンマを削除しても問題はありません。
句読点を取り除くと思われる FilterFactory はありますか? 何か案は?
ありがとう、ボグダン。
これを使用して、solr.PatternReplaceFilterFactory
先頭と末尾の句読点を削除できます。
<filter class="solr.PatternReplaceFilterFactory"
pattern="^\p{Punct}*(.*?)\p{Punct}*$"
replacement="$1"/>
また、(たとえば) 単語の前のドル記号を除いて、先頭と末尾のすべての句読点を取り除きたい場合は、次のように使用できます。
<filter class="solr.PatternReplaceFilterFactory"
pattern="^[\p{Punct}&&[^$]]*(.*?)\p{Punct}*$"
replacement="$1"/>
これは WordDelimiterFilterFactory で行われます。generateWordParts=1 を設定します。
使用できるPatternTokenizerFactoryもありますが、試したことはありません。
PatternReplaceFilterFactoryを使用する
<!-- remove punctuation -->
<filter class="solr.PatternReplaceFilterFactory" pattern="^(\p{Punct}*)(.*?)(\p{Punct}*)$" replacement="$2"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
..。