我正在寻找产品搜索引擎。每个人都建议使用Lucene.NET,但我想知道它是否有效。我想向Lucene文档提供MSSQL数据库中的字段,以便可以搜索五个不同的产品字段。
1)我可以从SQL数据库创建文档吗?
我能找到的所有样本都使用硬编码值。我想从数据库中的五个产品列填充文档。
如何设置text var以便从该特定字段中的数据库中获取所有内容?
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)如何使用一个查询搜索多个字段?
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的任何教程吗?
答案 0 :(得分:0)
要使用Lucene.Net搜索多个字段,您可以手动构造布尔查询并向其添加单个字段查询,或使用MultiFieldQueryParser为您构建布尔查询,或使用query parser syntax。示例:
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);
答案 1 :(得分:-1)
也许您也可以尝试SQL Server提供的全文搜索索引。