2012-06-26 54 views
0

我在尋找一個產品搜索引擎。每個人都建議Lucene.NET,但我想知道它是如何工作的,我可能會期待。我想爲Lucene文檔提供MSSQL數據庫中的字段,以便可以搜索五個不同的產品字段。Lucene.Net產品關鍵字搜索

1)我可以從SQL數據庫創建文檔嗎?

我可以找到的所有樣本都使用硬編碼值。我想從數據庫的五個產品列填充文檔。

如何設置文本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

「每個人都認爲Lucene.NET」。我真的建議你和Solr一起去。 Solr是一個基於Lucene的HTTP,並且非常適合數據庫索引,而且您不必編寫任何代碼。它可以被視爲一個搜索服務器。當你使用Solr時,你將能夠自己回答你的兩個問題。我知道你可能在Lucene上花了一些時間。只需下載Solr並試試半天。讓我知道反饋。 – Yavar

+0

有趣。這是網站:http://code.google.com/p/solrnet/對於Solr,我應該使用我的.Net項目? – User970008

+0

@Yavar但AFAIK你必須在專用服務器上設置Solr,這可能是有限的預算項目的一部分開銷 –

回答

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

也許你還可以嘗試全文搜索由SQL Server提供的索引。

+0

這應該是一個評論,而不是回答:)。用戶的問題非常簡單。他沒有要求提出建議。如果您需要提供,最好在評論中提供。 – Yavar

+0

嗨Gijo,我無法使用此客戶端的全文搜索(出於政治原因)。不管怎麼說,還是要謝謝你。 – User970008