我正在为一个商业网站开发一个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

Update 这是我的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配置的append参数的solr处理程序配置 .

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