Lucene中多词词的模糊搜索

时间:2012-07-13 20:38:49

标签: java lucene

我正在尝试添加搜索功能,允许用户通过电子邮件地址(如果有的话)查找潜在的朋友,或者如果不这样做,则按名称查找。我现在正在看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都不会返回任何结果。

我很想要一个更好的方法(对于两个编辑距离匹配可以带我多远的明显限制),以及我如何使多字匹配工作。

1 个答案:

答案 0 :(得分:-1)

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

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