私はかなりの期間これを自分で試し、ネットのいたるところを見てきましたが、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で見つかりました/。