0

フルネームでSolrデータベースを検索したい。データベース内のドキュメントはさまざまなソースからのものであるため、ドキュメント内の名前のスペルは一貫していません。綴りは、ファーストネーム ラストネームまたはラストネーム ファーストネームのいずれかです。また、1 つ以上の名と 1 つ以上の姓が存在する場合もあります。

名前の場合: 名: ALBERTO JORGE 姓: ALONSO CALEFACCION

つづりは次のとおりです。ALBERTO JORGE ALONSO CALEFACCION

アルベルト・J・アロンソ・カレファシオン

アルベルト・J・アロンソ・カレファシオン

アルベルト・アロンソ・カレファシオン

とアロンソ・カレファシオン・アルベルト・ホルヘ

アロンソ・カレファシオン アルベルト J.

アロンソ・カレファシオン アルベルト J

アロンソ・カレファシオン・アルベルト

「ALONSO CALEFACCION」でのみ姓を検索できます~0 正解で。

しかし、1 回の一致ですべての異なるスペルを検索するにはどうすればよいでしょうか。検索は、ユーザー入力に基づいてプログラムによって作成されます。

スペイン語の名前には「y」や「de」などの余分な単語が含まれている可能性があるため、検索はより複雑になります (この場合)。したがって、データベース内の名前は次のようになります。ALBERTO JORGE ALONSO Y CALEFACCION

ご協力いただきありがとうございます。

私はSolr 3.6を使用しています

4

1 に答える 1

0

firstname名と姓をフィールドに保存した場合はlastname、プログラミング言語でクエリを準備できます。たとえば、ユーザーが 2 つの単語を入力した場合、クエリを実行できますfirstname:(word1) AND lastname:(word2) OR firstname:(word2) AND lastname:(word1)

これらのフィールドに特別なタイプを作成して、初期フォームと短縮フォームを見つけることもできます。

<fieldType name="AuthorsPrefix" class="solr.TextField"  positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory" />
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="200" side="front"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory" />
  </analyzer>
</fieldType>

詳しくはこちらをご覧ください

もう 1 つの方法は、インデックス作成中に可能なすべての組み合わせを生成し、このコンボ フィールドで著者を検索することです。

ALBERTO JORGE ALONSO CALEFACCION
ALBERTO J ALONSO CALEFACCION
ALBERTO ALONSO CALEFACCION
ALONSO CALEFACCION ALBERTO JORGE
ALONSO CALEFACCION ALBERTO J
ALONSO CALEFACCION ALBERTO

シノニムを自動的に生成して、独自のSearchComponent.

于 2013-09-13T13:02:35.830 に答える