我试图用一些可能存在拼写错误的句子,例如:"我喜欢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中,但我没有得到任何更好的结果。
答案 0 :(得分:0)
您的查询字符串看起来有点奇怪,有些“错位”','但这可能只是一个错字。基本上模糊搜索的想法是正确的。但是,我不会使用0.5参数。这是默认值,在Lucene 4中已弃用。
你能举一些关于结果奇怪的更具体的例子吗?
作为替代方法,您可以为包含标记最常见拼写错误版本的代码构建同义词列表。这样您就不需要依赖模糊搜索了。您可以将同义词和标记一起编入索引。