2012-09-07 83 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为此添加了一点。 –