2012-09-07 139 views
2

我正在致力於基於ASP.NET MVC3 C#的電子商務網站。我已經在其中實施了SolrNet。有兩個字段,如「CategoryId」和「ProductName」。我想在特定的CategoryID中搜索關鍵字。請注意,產品被映射到多個類別。所以基本上我試圖通過下面的查詢使用solr管理員進行搜索,但沒有得到確切的結果。如何在Solr的有限字段中搜索關鍵字?

(CategoryID:26 AND Name:Gigabyte) OR (CategoryID:118 AND Name:Gigabyte) OR (CategoryID:121 AND Name:Gigabyte) 

查詢有什麼問題? 如果我想在限定類別中搜索相同的產品名稱,將會查詢什麼?

回答

3

我會利用Solr中的Filter Query在您給出的示例中通過CategoryID限制結果。因此,從Solr的管理頁面,點擊全接口鏈路上的「進行查詢」部分下輸入以下內容:

查詢字符串:Name:Gigabyte

篩選查詢:(CategoryId:26 OR CategoryId:118 OR CategoryId:121)

您可以通過以下方式從SolrNet執行相同的操作:

ISolrOperations<Item> solr = ... 
var items = solr.Query(new SolrQueryByField("name","Gigabyte", new QueryOptions { 
     FilterQueries = new ISolrQuery[] { 
       new SolrQueryByField("CategoryID", 26), 
       new SolrQueryByField("CategoryID", 118), 
       new SolrQueryByField("CategoryID", 121), 
     } 
}); 
+1

要向@ Paige的答案添加一點,您希望使用過濾器的原因最重要的是它不會影響結果的分數。也就是說,對於「千兆字節」的查詢將返回與即使查詢未根據「類別標識符」過濾也相同的分數。 –

+0

感謝@David爲此添加了一點。 –