我自己已经尝试了相当长的一段时间,并在网上到处寻找 - 但无法找到任何通过 Lucene.NET 2.9.2 搜索模糊短语的示例。( C# )
有什么东西能够详细建议如何做到这一点和/或提供一些示例代码 - 我会非常感谢任何帮助,因为我完全被困住了?
我自己已经尝试了相当长的一段时间,并在网上到处寻找 - 但无法找到任何通过 Lucene.NET 2.9.2 搜索模糊短语的示例。( C# )
有什么东西能够详细建议如何做到这一点和/或提供一些示例代码 - 我会非常感谢任何帮助,因为我完全被困住了?
我假设您运行 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上找到了这些信息和一些更有用的信息
/。