【问题标题】:Querying Solr (Solr.net) with multi criteria query and localparams使用多条件查询和 localparams 查询 Solr (Solr.net)
【发布时间】:2012-12-06 15:19:16
【问题描述】:

我正在尝试这样做:

http://solr:8080/solr/select/?q=name_make:[make]+name_model:[model]&rows=10000&wt=json&fq={!tag=dt}name_model:[model]&facet=on&facet.field={!ex=dt}name_model&facet.sort=count&facet.field.mincount=1

使用 solr.net - 我有这个:

var multipleQuery = new SolrMultipleCriteriaQuery(queryList, "AND");
var Facets = new FacetParameters();

Facets.Queries.Add(new SolrFacetFieldQuery(new LocalParams{{"ex", "dt"}} +"name_model") { MinCount = 1, Sort = true});

 List<ISolrQuery> filter = new List<ISolrQuery>();
 filter.Add(new LocalParams { { "tag", "dt" }, { "mincount", "1" } } + Query.Field("name_model").Is(NameModel));

var result = solr.Query(multipleQuery, new QueryOptions
                                                  {
                                                      FilterQueries = filter,
                                                      Rows = rows,
                                                      Facet = facets, 
                                                      Start = index
                                                  });

我期待类似的东西

  • 制作 1 [ ] 101
  • 制作 2 [ ] 144
  • 制作 3 [x] 232
  • 制作 2 [ ] 32

但只能得到

  • 制作 3 [x] 232

从我的追踪中我看到了

  • Solr q (name_make:[make] AND name_model:[model] AND price:[0 TO 250000] AND year_registration:[0 TO 10000000]) 0,023619 0,000006
  • Solr fq {!tag=dt mincount=1}name_model:A3

我是错过了一部分,还是走错了路?

【问题讨论】:

    标签: solr filtering tagging solrnet


    【解决方案1】:

    在您的原始查询(在顶部)中,您有 q=name_make:[make]+name_model:[model],在下方有 name_make:[make] **AND** name_model:[model],因此您的默认运算符可能存在问题。您可以使用 SolrNet 使用“+”运算符而不是 && 来保留它。

    ..new SolrQuery("name_make:[make]") + new SolrQuery("name_model:[model]")

    .. 将返回您:name_make:[make] name_model:[model]

    在哪里......

    new SolrQuery("name_make:[make]") &amp;&amp; new SolrQuery("name_model:[model]")

    .. 将返回您:name_make:[make] AND name_model:[model]

    不确定是不是这样,但可以尝试一下以防万一。

    【讨论】:

      【解决方案2】:
      Please try to pass the string arraty that contains multiple field names and search text in the below method. I will return the solrnet query for search with multiple filed name with OR condition.
      
      public ISolrQuery BuildQuery(string[] SearchFields, string SearchText)
          {
      
              AbstractSolrQuery firstQuery = new SolrQueryByField(parameters.SearchFields[0], SearchText) { Quoted = false };
              for (var i = 1; i < SearchFields.Length; i++)
              {
                  firstQuery = firstQuery || new SolrQueryByField(SearchFields[i], SearchText) { Quoted = false };
              }
      
              return firstQuery;
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-24
        • 1970-01-01
        • 2015-05-10
        • 2011-09-18
        • 1970-01-01
        • 2019-05-25
        • 1970-01-01
        • 2012-05-01
        相关资源
        最近更新 更多