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一切正常。我也可以搜索单个单词的名称,比如Madonna就好了。但是,一旦我尝试找到多词名称,一切就崩溃了。搜索JohnJaneJohn DoeDoe全部不返回任何结果。

我很好奇更好的方法(2 编辑距离匹配可以带我走多远有一些明显的限制),以及如何使多词匹配起作用。

4

1 回答 1

-1

至于多词匹配,我会查看您的分析器,以及您传递给每个文档中每个字段的 analyze.yes / analyze.no 设置。

分析器对搜索进行标记,但如果您不使用相同的分析器实例进行搜索和索引,则会出现各种带有空格的奇怪行为 - 除其他外。

于 2012-07-19T11:38:45.140 回答