Solr:如何搜索多个字段

4

我正在使用solrnet。我有一个标题和描述字段。我需要同时搜索这两个字段。我该如何做?

3个回答

5

Jayendra的回答是正确的,但如果你想在查询时而不是索引时(使用copyFields)将数据聚合到单个字段中,并且想要使用标准处理程序而不是dismax,则可以在SolrNet中执行以下操作:

var query = Query.Field("title").Is(mytitle) || Query.Field("Description").Is(mydescription);
var results = solr.Query(query);

请参阅查询运算符DSL获取更多信息。


哇..非常有趣。当有人在查询框中输入“火箭科学家”时,我将其传递给SolrNet。对于“mytitle”和“mydescription”,我应该放什么? - Luke101
@Luke101:它们是一样的...只是示例变量代表用户输入。例如,mytitle = mydescription = Request.QueryString["q"]; - Mauricio Scheffer
谢谢。我已经采用了这个解决方案。 - Luke101

2
如果您正在使用标准的请求处理程序 -
创建一个新字段title_description并将标题和描述字段复制到该字段中。
将该字段用作默认搜索字段。
<defaultSearchField>title_description</defaultSearchField>

在默认搜索字段上进行搜索的查询 q 被触发 -

q=bank

如果您可以使用dismax或edismax查询解析器,您可以定义一个新的请求处理程序。
将查询字段定义为qf。

<requestHandler name="dismax" class="solr.SearchHandler">
   <lst name="defaults">
     <str name="echoParams">explicit</str>
     <!-- Query settings -->
     <str name="defType">edismax</str>
     <str name="qf">
        title description
     </str>
     <str name="q.alt">*:*</str>
     <str name="rows">10</str>
     <str name="fl">*,score</str>
   </lst>
</requestHandler>

查询 - 将dismax作为qt参数传递,这将在标题和描述字段上进行搜索

q=bank&qt=dismax

0
请尝试在下面的方法中传递包含多个字段名称和搜索文本的字符串数组。我将返回用于使用OR条件搜索多个字段名称的solrnet查询。
public ISolrQuery BuildQuery(string[] SearchFields, string SearchText)
    {

        AbstractSolrQuery firstQuery = new SolrQueryByField(SearchFields[0], SearchText) { Quoted = false };
        for (var i = 1; i < SearchFields.Length; i++)
        {
            firstQuery = firstQuery || new SolrQueryByField(SearchFields[i], SearchText) { Quoted = false };
        }

        return firstQuery;
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接