3

我自己已经尝试了相当长的一段时间,并在网上到处寻找 - 但无法找到任何通过 Lucene.NET 2.9.2 搜索模糊短语的示例。( C# )

有什么东西能够详细建议如何做到这一点和/或提供一些示例代码 - 我会非常感谢任何帮助,因为我完全被困住了?

4

1 回答 1

2

我假设您运行 Lucene 并创建了一个搜索索引,其中包含一些字段。所以让我们进一步假设:

var fields = ... // a string[] of the field names you wish to search in
var version = Version.LUCENE_29; // your Lucene version
var queryString = "some string to search for";

一旦你拥有了所有这些,你就可以继续在多个字段上定义一个搜索查询,如下所示:

var analyzer = LuceneIndexProvider.CreateAnalyzer();
var query = new MultiFieldQueryParser(version, fields, analyzer).Parse(queryString);

也许你已经做到了,只是错过了模糊的部分。~我只是在中的每个单词中添加一个波浪号,queryString以告诉 Lucene 对 queryString 中的所有单词进行模糊搜索:

if (fuzzy && !string.IsNullOrEmpty(queryString)) {
    // first escape the queryString so that e.g. ~ will be escaped
    queryString = QueryParser.Escape(queryString);
    // now split, add ~ and join the queryString back together
    queryString = string.Join("~ ",
        queryString.Split(' ', StringSplitOptions.RemoveEmptyEntries)) + "~";
    // now queryString will be "some~ string~ to~ search~ for~"
}

这里的关键点是 Lucene 仅对以 . 结尾的术语使用模糊搜索~在http://scatteredcode.wordpress.com/2011/05/26/performing-a-fuzzy-search-with-multiple-terms-through-multiple-lucene-net-document-fields上找到了这些信息和一些更有用的信息 /

于 2013-02-19T12:00:19.777 回答