使用SolrNet形成查询时,追加部分无法按预期工作

时间:2014-11-05 07:14:30

标签: solr lucene solr4 solrnet

我正在为一个商业网站开发Solr,使用ASP.NET MVC构建,并使用SolrNet进行集成。

除了追加查询参数的搜索处理程序组件配置外,一切正常。我指的是http://wiki.apache.org/solr/SearchHandler#Configuration

我想要实现的具体事情是使用solr配置文件中的append part添加搜索查询参数。这是从我的solr配置中复制的处理程序配置。

 <lst name="defaults">
  <str name="echoParams">explicit</str>
  <int name="rows">1</int>
  <str name="field">Name</str>
  <str name="spellcheck">on</str>     
  <str name="spellcheck.collate">true</str>
  <str name="spellcheck.dictionary">default</str>
  <str name="spellcheck.dictionary">wordbreak</str>
  <str name="spellcheck.maxcollations">5</str> 
  <str name="spellcheck.count">5</str>
  <str name="spellcheck.alternativetermcount">2</str>
  <str name="spellcheck.maxresultsforsuggest">5</str>
  <str name="spellcheck.maxcollationtries">5</str>
 </lst>
 <lst name="appends">
  <str name="qf">Vendor^1</str>
 </lst>

 <arr name="last-components">
  <str>spellcheck</str>
</arr>

当我从Solr管理界面进行查询时,这似乎工作正常。但是,当我通过SolrNet完成查询时,这不起作用。这是两个查询:

通过Solr Admin完成查询:

http://localhost:8983/solr/mycore/select?q=ABC&defType=edismax&qf=Name^8++ShortDescription^4++FullDescription^3+CategoryCopy^5+ManufacturerCopy^5+Sku^1+ChildSku^1+nGramContent+CustomProperties&spellcheck=true&spellcheck.q=ABC

以上查询给出了我想要的产品的预期结果。

这是从SolrNet完成的查询,它使用相同的参数,但我没有得到我想要的结果。

http://localhost:8983/solr/mycore/select?q={!type%3dedismax+qf%3d%27Name^8++ShortDescription^4++FullDescription^3+CategoryCopy^5+ManufacturerCopy^5+Sku^1+ChildSku^1+nGramContent+CustomProperties%27+bq%3dStockAvailability%3atrue^1}%28ABC%29&start=0&rows=2&fq=Price%3a[0+TO+9999999999999]&spellcheck=true&spellcheck.q=ABC&spellcheck.collate=true

更新 这是我的Solrnet查询:

private static ISolrOperations<MyClass> solr;                        
SolrQueryResults<MyClass> Results = new SolrQueryResults<MyClass>();   
Results = solr.Query(new LocalParams { { "type", "edismax" }, { "qf", "Name^" + nameWeight + "  Field1^" + Field1Weight + "  Field2^" + Field2Weight " }, { "bq", "InStock:true^"+ flag } });

这不起作用,因为它可能不尊重Solr处理器配置,因为solnd参数是从solr配置完成的。

但为什么以及如何解决这个问题?

0 个答案:

没有答案