2

私は検索機能を追加して、人々が潜在的な友人を電子メール アドレス (持っている場合) または持っていない場合は名前で検索できるようにしようとしています。私は現在 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.comab@c.comます。すべて動作します。1 単語の名前も同様に検索できますMadonna。しかし、複数単語の名前を見つけようとすると、すべてがバラバラになります。JohnJaneJohn Doe、またはすべてを検索してDoeも結果は返されません。

より良いアプローチ (編集距離 2 の一致でどこまで到達できるかについては明らかな制限があります) と、複数単語の一致を機能させる方法に興味があります。

4

1 に答える 1

-1

複数単語の一致については、アナライザーと、各ドキュメントの各フィールドに渡す analyze.yes / analyze.no 設定を調べます。

アナライザーは検索をトークン化しますが、検索とインデックス作成に同じアナライザー インスタンスを使用しないと、特に、空白であらゆる種類の奇妙な動作が発生します。

于 2012-07-19T11:38:45.140 に答える