如何使用Lucene / Hibernate Search对句子中的每个单词执行模糊查询?

时间:2014-08-07 17:27:31

标签: lucene hibernate-search

我试图用一些可能存在拼写错误的句子,例如:"我喜欢yava,IDEA IntelliJ,JoyoScrapt,GWT,hypernate,Rolling和spring"并执行模糊搜索这将与我已经由Lucene索引的标签相匹配,例如"冬眠"和" java"。

我认为我通过生成如下所示的查询字符串来实现此目的:

&#34; I~0.5爱~0.5 yava,~0.5 IDEA~0.5 IntelliJ,~0.5 JoyoScrapt,~0.5 GWT,~0.5 highnate,~0.5 Rolling~0.5和~0.5 spring~0.5&​​#34; < / p>

不幸的是,这种行为很奇怪。如果句子较短,则拼写错误的单词将与我给出的示例标签匹配。但是,当句子变长时,它们就不再匹配了。

任何人都知道完成我想要做的事情的正确方法,即基于每个单词的模糊逻辑匹配?我还尝试为每个单词构建一个单独的术语查询,然后将它们添加到BooleanQuery中,但我没有得到任何更好的结果。

1 个答案:

答案 0 :(得分:0)

您的查询字符串看起来有点奇怪,有些“错位”','但这可能只是一个错字。基本上模糊搜索的想法是正确的。但是,我不会使用0.5参数。这是默认值,在Lucene 4中已弃用。

你能举一些关于结果奇怪的更具体的例子吗?

作为替代方法,您可以为包含标记最常见拼写错误版本的代码构建同义词列表。这样您就不需要依赖模糊搜索了。您可以将同义词和标记一起编入索引。