6

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

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

这个现在工作正常,但我想在不指定字段的情况下进行查询,这样当我输入搜索关键字时,solr 将查看所有可用字段并返回结果。我找到了代码从这里在 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 中的默认搜索字段?或者我做错了什么? 我在这里上传了我的 Solrconfig 文件

4

2 回答 2

5

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

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

我希望这就是你要找的。

于 2013-10-09T20:35:02.930 回答
4

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

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

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

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

于 2013-10-10T01:12:19.463 回答