Solr でフルネーム検索を設定しようとしています。今まで自分の仕事はうまくいっていると思っていたのですが、何かおかしいことに気づき、それを修正する方法がわかりませんでした。
だから私はフルネームで検索できるようにしたい。私のインデックスは、名前と姓を取得し、それらをキーワード トークナイザーを使用して 1 つの多値フィールドに配置するデータベースです。
これが私のフィールドタイプです:
<fieldType name="text_auto" class="solr.TextField">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
すべてが正常に機能し、名または姓のみを検索でき、存在するフルネームが表示されます。スペルミスがなければ、フルネームでも任意の順序で機能します。
私は何か間違っていることに気づきました!たとえば、Dupont dupont を要求すると、最初の名前が dupont と一致しないものも含め、存在するすべての Dupont が表示されます。フルネームで dup が 2 回見つかったためだと思います... 問題は、"dupont d" を探している場合、"d" が Dupont に含まれているため、存在するすべての Dupont を見つけることです。それは私が望んでいることではありません。名前 (他の文字列) に広告が含まれるすべてのデュポンを検索したいのです。
だから私はそれを機能させる方法を見つける必要があります、私は多くの異なるトークナイザーとフィルターを試しましたが、それは不可能だと思います...あなたが私に提供できる助けをありがとう!