0

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 を見つけることです。それは私が望んでいることではありません。名前 (他の文字列) に広告が含まれるすべてのデュポンを検索したいのです。

だから私はそれを機能させる方法を見つける必要があります、私は多くの異なるトークナイザーとフィルターを試しましたが、それは不可能だと思います...あなたが私に提供できる助けをありがとう!

4

1 に答える 1

0

次のようなもので検索しているように聞こえます:

q=dupont d

dupont dupont(ちなみに、デフォルトの演算子を に設定していると仮定しています。このAND種の行動は驚くべきものです)。この順序で「dupont d」というフレーズを見つけたい場合は、引用句クエリを使用して検索する必要があります。

q="dupont d"

またはdupont dupont

q="dupont dupont"
于 2013-05-10T15:58:29.903 に答える