7

既存の質問の投稿をすべて調べていましたが、関連性の高いものを取得できませんでした。

個人の名、姓、住所 1、住所 2、国コード、生年月日の何百万ものレコードを含むファイルがあります。上記のファイルを使用して顧客のリストを毎日チェックしたいと思います (顧客リストも毎日更新され、ファイルも毎日更新されます)。

名と姓についてはあいまい一致 (lucene fuzzyquery/levenshtein 距離 90% 一致の可能性があります) を希望し、残りのフィールドの国と生年月日については完全一致が必要でした。

私はLuceneを初めて使用しますが、投稿の数を見ると、可能のようです。

私の質問は次のとおりです。

  • 入力ファイルのインデックスはどのように作成すればよいですか? FN、LN、国、DOB の組み合わせでインデックスを作成し、そのインデックスを検索に使用する必要があります
  • ここでLuceneのファジークエリを使用するにはどうすればよいですか?

同じことを実装できる他の方法はありますか?

4

2 に答える 2

4

Rushik、ここにいくつかのアイデアがあります:

  • Solrの使用を検討してください。裸の Lucene よりも使い始めるのがはるかに簡単です。
  • ファイルの Lucene/Solr インデックスを作成します。住所に複数値フィールドまたは 2 つの異なるフィールドを使用する場合、顧客ごとに 1 つのドキュメントで十分なようです。
  • 一人一人に固有のIDはありますか?Solr を使用するには、Solr が必要です。Lucene では、一意の ID を使用しなくても問題を解決できます。
  • 国コードを「キーワード」として保存します。生年月日の正確な一致のみが必要な場合は、同じことを行うことができます。範囲クエリの場合は、別の表現が必要になります。
  • あなたの顧客リストはファイルよりも小さいと思います。考えられるポリシーは、ファイル内の変更を毎日インデックス化することです (ここでは、一意の ID が非常に便利です。そうしないと、クエリで削除する必要があり、マークを見逃す可能性があります)。次に、インデックスを最適化し、その後、更新された顧客リストの検索を実行できます。
  • あなたが説明するのはBooleanQueryです。その句は、姓と名のファジークエリと、他のフィールドの用語クエリです。クエリは、プログラムで作成するか、クエリ パーサーを使用して作成できます。
  • こちら で説明されているように、名前に soundex を使用することを検討してください。
于 2010-12-08T07:20:51.947 に答える
2

この主題に関するいくつかの学術論文は、読む価値があります (無料の PDF は google で入手できます)。

  • 個人名照合の比較: 手法と実際の問題 (2006)
  • レコードリンケージの概要と現在の研究の方向性 (2006)
  • 並列オープン ソース データ リンケージ システム (2004)

次のライブラリ/フレームワークも考慮する必要があります。

(将来の訪問者のために答えます。)

于 2015-10-20T16:36:21.983 に答える