在Lucene,我可以使用模糊搜索来获得相似的'结果
例如,以下查询:
text:awesome~0.8
会发现这些文件有80%的相似文字,例如' awesom'。
我的问题是,我可以对整个文本(多个单词)使用模糊搜索吗?
例如,我想找到80%类似的文字到以下文字:
这是我的带有多个单词的文字
在每个单词上加上模糊子句不会给我想要的结果:
text:(+this~0.8 +is~0.8 +my~0.8 +text~0.8 +with~0.8 +multiple~0.8 +words~0.8)
因为它只返回那些包含查询中指定的所有单词(或每个单词的80%相似单词)的文档。
我希望查询返回结果,其中整个字符串的相似度为80%(即使它没有整个单词),例如:
这是包含多个单词的文字
像这样 -
text:(+this +is +my +text +with +multiple +words)~0.8
显然上面的查询给出了语法错误,但我需要根据整个文本/短语的相似性得到结果。
我很高兴为此目的使用Java API类,因为我需要在Java程序中使用它。
答案 0 :(得分:1)
我不确定Lucene中是否允许模糊查询的浮动相似性。从lucene-4.0及更高版本开始,FuzzyQuery支持最多2个编辑距离。
假设您希望编辑距离为2.您可以在索引字段时使用关键字分析器。这不会标记您的字段值。在搜索时,您可以将FuzzyQuery与包含全文的术语一起使用。
此解决方案的局限性: