私は検索機能を追加して、人々が潜在的な友人を電子メール アドレス (持っている場合) または持っていない場合は名前で検索できるようにしようとしています。私は現在 Lucene を検討していますが、他のソリューションも検討しています。私はそのようなドキュメントのセットを作成しようとしています:
| id | text | text |
| 1234 | a@b.com | John Doe |
| 1235 | ab@c.com | Jane Doe |
| 1236 | c@ba.com | Madonna |
(はい、text
乗算指定されています)
これはすべて
new IndexWriter(directory, new IndexWriterConfig(Version.LUCENE_40, new KeywordAnalyzer()));
次に、次のように検索します。
TopDocs results = mySearcher.search(
new FuzzyQuery(new Term("text", term), 2, 0),
10);
メールでの検索は問題なくできます。を検索してa@b.com
いab@c.com
ます。すべて動作します。1 単語の名前も同様に検索できますMadonna
。しかし、複数単語の名前を見つけようとすると、すべてがバラバラになります。John
、Jane
、John Doe
、またはすべてを検索してDoe
も結果は返されません。
より良いアプローチ (編集距離 2 の一致でどこまで到達できるかについては明らかな制限があります) と、複数単語の一致を機能させる方法に興味があります。