Java 全文的Lucene模糊搜索
在Lucene中,我可以使用模糊搜索获得“相似”的结果 例如,以下查询:Java 全文的Lucene模糊搜索,java,search,lucene,full-text-search,fuzzy-search,Java,Search,Lucene,Full Text Search,Fuzzy Search,在Lucene中,我可以使用模糊搜索获得“相似”的结果 例如,以下查询: text:awesome~0.8 将发现文档中有80%的相似文本,如“awesom” 我的问题是,我可以对整个文本(多个单词)使用模糊搜索吗 例如,我想找出80%与以下文本相似的文本: 这是我的多字文本 在每个单词上加上fuzzy子句并不能得到理想的结果: text:(+this~0.8 +is~0.8 +my~0.8 +text~0.8 +with~0.8 +multiple~0.8 +words~0.8) 因为它将
text:awesome~0.8
将发现文档中有80%的相似文本,如“awesom”
我的问题是,我可以对整个文本(多个单词)使用模糊搜索吗
例如,我想找出80%与以下文本相似的文本:
这是我的多字文本
在每个单词上加上fuzzy子句并不能得到理想的结果:
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程序中使用它。我不确定Lucene中是否允许模糊查询的浮动相似性。lucene-4.0及更高版本支持最大2个编辑距离 假设您希望编辑距离为2。在为字段编制索引时,可以使用关键字分析器。这不会标记字段值。在搜索时,您可以使用FuzzyQuery和包含全文的术语 此解决方案的局限性:
- 最大编辑距离为2
- 我们假设您正在查找的任何内容都是该字段的完整值。例如,如果索引值为“this is my text”,则如果使用“this isny”[在查询中出错]进行搜索,则无法获取doment。如果您将此文档查询为“this isnytext”,则可以获取此文档