2010-10-29 123 views
3

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

是能够建议如何详细地做这个和/或提供一些示例代码 - 我会认真感谢任何帮助,因为我完全卡住了吗?

+0

http://stackoverflow.com/questions/2631206/lucene-query-bla-match-words-that-start-with-something-fuzzy-how – 2010-10-29 17:54:31

+0

耶会爱一些代码或任何有关模糊短语搜索在Lucene 2.9.2 – Tom 2010-10-29 18:46:24

回答

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的做了查询字符串中的所有单词模糊搜索:

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/上找到了这个和更多有用的信息。