Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 全文的Lucene模糊搜索_Java_Search_Lucene_Full Text Search_Fuzzy Search - Fatal编程技术网

Java 全文的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) 因为它将

在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)
因为它将只返回那些包含查询中指定的所有单词(或每个单词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”,则可以获取此文档