C# 字符串Lucene.NET中的模糊子字符串匹配

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库中是可能的吗 如果不支持,它是否支持文本中至少一个单词的模糊匹配 例如:

我刚刚安装了Lucene.NET

我在做文本搜索。 我想检查大文本是否包含/模糊匹配的单词/短语,比如:

Eg1:

正文: “我在stackoverflow上发布了一个关于Lucene.NET的问题。我会得到一个asnwer吗?”

textToSearch:“发布了一个关于Lucene的问题”

这两个应该是匹配的,因为文本包含textToSearch(除了samll打字错误abot->about)

这在Lucene.NET库中是可能的吗

如果不支持,它是否支持文本中至少一个单词的模糊匹配

例如:

文字:“我发布了一个关于stackoverflow的问题”


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,但那显然是错的。