私はSolrに比較的慣れていないので、明らかな何かが欠けている場合はご容赦ください。ユーザーがミュージシャンを検索できるアプリケーションがあります。インデックス作成は、正しいスペルの読み取り専用データベースから取得されるため、インデックス側で把握しました。
ただし、クエリ側では、さまざまなスペルの誤り/違いを予測する必要があり、solrがそれらのインスタンスを見つけるのを支援したいと思います。私たちの古い自家製の検索ソリューションから、正規表現とそれらが適用されるアーティストのリストがあります。PatternReplaceCharFilterFactoryを使用してそれらをsolrに変換しようとしたとき、完全に機能するものもあれば、まったく機能しないものもあることに気付きました...それらの間に韻も理由もないようです。
例えば:
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="em[ei]n[ei]m" replacement="Eminem"/>
エミネムの一般的なスペルミスを正確にキャプチャします。しかし、バンド311の場合:
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="[Tt]hree [Ee]leven" replacement="311"/>
動作しません。別の例は、ナインインチネイルズです。
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="((nine|9).*inch.*nails\b)|(n\.? ?i\.? ?n\.?\b)" replacement="Nine Inch Nails"/>
バンド名の最も一般的なパターンを見つけるのに最適です。しかし、イブ6の場合:
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="[Ee]ve.{0,4}([Ss]ix|6)" replacement="Eve 6"/>
このフィルターの使用法に欠けている基本的なものはありますか?私は上記の正規表現でいくつかのバリエーションを試しましたが(「スリーイレブン」のようなリテラルを使用することさえあります)、それでも成功しませんでした。問題のフィルターをアナライザーで唯一のPatternReplaceCharFilterFactoryにしようとしました。また、正しいスペルを検索すると適切な結果が返されるため、これらのアイテムが正しくインデックスに含まれていることも確かです。
助言がありますか?
スノーダル