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

Ath*_*hul 5 apache solr solrnet

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

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

这个工作正常,但是我想在没有指定字段的情况下进行查询,这样当我输入搜索关键字时,solr将查看可用的所有字段并返回结果.我找到了代码来实现它在SolrNet库中从这里开始

        var solr = ServiceLocator.Current.GetInstance<ISolrOperations<Product>>();
        var results = solr.Query(new SolrQuery("SP2514N"));
Run Code Online (Sandbox Code Playgroud)

但这从来没有奏效,当我深入到底部时,我发现我需要在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>
Run Code Online (Sandbox Code Playgroud)

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

小智 5

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

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

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

  • 默认搜索字段Solr在解析查询时使用<defaultSearchField>来标识在未使用显式字段名称的查询中应搜索哪个字段名称.最好不要使用或依赖此设置; 相反,搜索的请求处理程序或查询LocalParams应指定要搜索的默认字段.此处的设置可以省略,并且正在考虑弃用. (3认同)