在Apache Solr中设置默认搜索字段

时间:2013-10-09 05:15:28

标签: apache solr solrnet

我正在尝试通过Apache Solr库实施SolrNet搜索。到目前为止,我已设法在我的计算机中运行Solr实例并根据特定字段进行一些查询。 我的代码看起来像这样

   var solr = ServiceLocator.Current.GetInstance<ISolrOperations<Product>>();
   var results = solr.Query(new SolrQueryByField("id", "SP2514N"));

这一个现在工作正常,但是我想在没有指定字段的情况下进行查询,这样当我输入搜索关键字时,solr会查看可用的所有字段并返回结果。我找到了代码从here

在SolrNet库中创建它
        var solr = ServiceLocator.Current.GetInstance<ISolrOperations<Product>>();
        var results = solr.Query(new SolrQuery("SP2514N"));

但这从未奏效,当我深入到底部时,我发现我需要在Solr实例中设置默认搜索字段,以便当没有其他选择时Solr将搜索那些字段(这是我理解它的方式我不是确定这个)。 所以我去Solr设置默认字段,我拿了 Solrconfig.XML 并像这样编辑

    <requestHandler name="/query" class="solr.SearchHandler" default="true">
     <lst name="defaults">
       <str name="echoParams">explicit</str>
       <str name="wt">json</str>
       <str name="indent">true</str>
       <str name="df">text</str>
       <str name="df">id</str>
     </lst>
  </requestHandler>

[刚刚添加了<str name="df">id</str>这个字段作为额外的]。但这也没有帮助我被卡住了,任何人都可以告诉我如何在Solr中正确设置默认搜索字段?或者我在做其他任何事情错误? 的 I have Uploaded My Solrconfig file here

2 个答案:

答案 0 :(得分:5)

我不了解SolrNet库,但要为搜索创建默认字段,您需要在schema.xml中定义DefaultSearchField,即<defaultSearchField>FieldName</defaultSearchField>

您可以找到此文件@ <SOLR_HOME>\apache-solr-3.6.0\example\example-DIH\solr\testsyndrome\conf\schema.xml

我希望这就是你要找的东西。

答案 1 :(得分:4)

不要从SolrNet开始,使用Solr的内置Web Admin界面。在那里迭代直到你理解请求处理程序和参数。然后,回到SolrNet。

在您的情况下,您似乎更改了默认请求处理程序并尝试两次使用 df 参数。我现在会坚持原来的请求处理程序,以避免额外的问题。

使用 df 参数时,您是尝试搜索单个字段还是多个字段?如果是单个字段,则只保留参数的一个值。如果是多个,则需要切换到使用eDisMax,您可以在其中提供一组字段。

同样,管理界面允许您试验它,然后您可以将其添加到处理程序的默认参数中。