2012-12-06 5 views
2

내가이 할 노력하고있어 localparams : solr.net으로쿼리 다중 기준 쿼리 SOLR (Solr.net) 및

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 

을 -이 있습니다

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 
                }); 

뭔가 기대를 추천

    메이크
  • []는 101
  • 만들 1 2 144
  • ,745,
  • 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 name_model {태그 = DT mincount = 1!} : A3

내가 조각을 누락하거나 그것에 대해 잘못된 길을 가고 있는가 ?

답변

0

원래 검색어 (상단)가 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]") && new SolrQuery("name_model:[model]")

.. 돌아갑니다 : name_make:[make] AND name_model:[model]

확실하지 그건 경우 그것, 그러나 다만 경우를 위해 시도하는 무언가.

0
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; 
    }