C# 字符串Lucene.NET中的模糊子字符串匹配
我刚刚安装了Lucene.NET 我在做文本搜索。 我想检查大文本是否包含/模糊匹配的单词/短语,比如: Eg1: 正文: “我在stackoverflow上发布了一个关于Lucene.NET的问题。我会得到一个asnwer吗?” textToSearch:“发布了一个关于Lucene的问题” 这两个应该是匹配的,因为文本包含textToSearch(除了samll打字错误abot->about) 这在Lucene.NET库中是可能的吗 如果不支持,它是否支持文本中至少一个单词的模糊匹配 例如: 文字:“我发布了一个关于stackoverflow的问题”C# 字符串Lucene.NET中的模糊子字符串匹配,c#,.net,lucene,lucene.net,fuzzy-search,C#,.net,Lucene,Lucene.net,Fuzzy Search,我刚刚安装了Lucene.NET 我在做文本搜索。 我想检查大文本是否包含/模糊匹配的单词/短语,比如: Eg1: 正文: “我在stackoverflow上发布了一个关于Lucene.NET的问题。我会得到一个asnwer吗?” textToSearch:“发布了一个关于Lucene的问题” 这两个应该是匹配的,因为文本包含textToSearch(除了samll打字错误abot->about) 这在Lucene.NET库中是可能的吗 如果不支持,它是否支持文本中至少一个单词的模糊匹配 例如:
text搜索“stackovrlow”(拼写错误)是的,Lucene.Net支持文本中的单一模糊匹配。您可以借助 不幸的是,您只能以某种方式模仿第一个示例的行为。一种可能的解决方案是在每个子句都为的情况下创建big,但这也会导致性能不佳,因为它会丢失术语的顺序
另一种可能是使用它来帮助存储位置(您可以指定所需的slop),但不可能将FuzzyQuery添加为子句(您只能以某种方式尝试使用)神秘是对的,Span查询可能会有帮助,但说FuzzyQueries不能使用是错误的。这就是为什么。类似这样:
SpanQuery query = new SpanNearQuery.Builder("myField", true).
.addClause(new SpanMultiTermQueryWrapper(new FuzzyQuery(new Term("myField", "question"))))
.addClause(new SpanMultiTermQueryWrapper(new FuzzyQuery(new Term("myField", "abot"))))
.addClause(new SpanMultiTermQueryWrapper(new FuzzyQuery(new Term("myField", "lucene"))))
.build();
顺便说一句,请记住,当手动构造查询时(而不是使用queryparser),您需要考虑分析,因为它们不会通过分析器运行。一般来说,Lucene是对的,但不幸的是,Lucene.Net不是这样,因为Lucene.Net是非常过时的java版本Lucene@Mysterion-啊,你是对的,我错了。我以为是4.X,但那显然是错的。