0

商品検索エンジンを探しています。誰もが Lucene.NET を提案していますが、期待どおりに機能するかどうか疑問に思っています。Lucene ドキュメントに MSSQL データベースのフィールドをフィードして、5 つの異なる製品フィールドを検索できるようにしたいと考えています。

1) SQL データベースからドキュメントを作成できますか?

私が見つけることができるすべてのサンプルは、ハードコードされた値を使用しています。データベースの 5 つの製品列からドキュメントを作成したいと考えています。

その特定のフィールドでデータベースからすべてを取得するようにテキスト変数を設定するにはどうすればよいですか?

Document doc = new Document();
doc.Add(new Field("id", i.ToString(), Field.Store.YES, Field.Index.NO));
doc.Add(new Field("ProductDescription", text, Field.Store.YES, Field.Index.TOKENIZED));
writer.AddDocument(doc);

2) 1 つのクエリで複数のフィールドを検索するにはどうすればよいですか?

var queryParser = new QueryParser(Version.LUCENE_30, "ProductName", analyzer);
queryParser += new QueryParser(Version.LUCENE_30, "ProductDescription", analyzer);
queryParser += new QueryParser(Version.LUCENE_30, "ProductSpecification", analyzer);
queryParser += new QueryParser(Version.LUCENE_30, "ProductDetails", analyzer);
queryParser += new QueryParser(Version.LUCENE_30, "ProductKeywords", analyzer);

var query = queryParser.Parse("plasma tv");
//should return results for Sony Plasma TV, Sony HD Plasma, Sony 32 inch Plasma, Philips Plasma TV

MS SQL から Lucene へのチュートリアルはありますか?

4

2 に答える 2

0

Lucene.Net で複数のフィールドを検索するには、手動でブール クエリを作成して個々のフィールド クエリを追加するか、MultiFieldQueryParser を使用してブール クエリを作成するか、クエリ パーサー構文を使用します。例:

1) 2 つのフィールドの手動構築:

var query = new BooleanQuery();
Query nameQuery = 
     new QueryParser(Version.LUCENE_30, "ProductName", analyzer).Parse(keyword);
Query descriptionQuery = 
     new QueryParser(Version.LUCENE_30, "ProductDescription", analyzer).Parse(keyword);
query.Add(nameQuery, BooleanClause.Occur.SHOULD);
query.Add(descriptionQuery, BooleanClause.Occur.SHOULD);

2) MultiFieldQueryParser:

Query query = new MultiFieldQueryParser(                        
                            Version.LUCENE_30,   
                            new string[] { "ProductName", "ProductDescription" },
                            analyzer)
              .Parse(keyword);
于 2012-06-26T15:10:04.983 に答える
-1

SQL Server が提供するフルテキスト検索インデックスを試すこともできます。

于 2012-06-26T04:11:21.243 に答える