我正在尝试添加搜索功能,允许人们通过电子邮件地址(如果有)或姓名(如果没有)查找潜在朋友。我目前正在研究 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
一切正常。我也可以搜索单个单词的名称,比如Madonna
就好了。但是,一旦我尝试找到多词名称,一切就崩溃了。搜索John
、Jane
、John Doe
或Doe
全部不返回任何结果。
我很好奇更好的方法(2 编辑距离匹配可以带我走多远有一些明显的限制),以及如何使多词匹配起作用。