我正在尝试通过SolrNet库实现Apache Solr搜索。到目前为止,我已经设法在我的机器上运行了Solr的一个示例,并基于特定字段进行了一些查询。
var solr = ServiceLocator.Current.GetInstance<ISolrOperations<Product>>();
var results = solr.Query(new SolrQueryByField("id", "SP2514N"));
这一个现在工作得很好,但我想使查询与出指定一个字段,这样当我输入一个搜索关键字solr将查找到所有可用的字段,并返回一个结果.我已经找到了代码,使它在SolrNet库从here
var solr = ServiceLocator.Current.GetInstance<ISolrOperations<Product>>();
var results = solr.Query(new SolrQuery("SP2514N"));
但是这从来没有工作,当我向下钻到底部,我发现我需要在Solr示例中设置默认搜索字段,以便Solr将搜索该字段时,没有其他选择(这是我如何理解它,我不确定这一点)。
<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>
[just添加<str name="df">id</str>
这个字段作为额外的]。但这也从来没有帮助,我卡住了,谁能告诉我我怎么能在Solr中正确设置默认搜索字段?或者我做错了什么?I have Uploaded My Solrconfig file here
2条答案
按热度按时间ijnw1ujt1#
我不知道SolrNet库,但要为搜索创建一个默认字段,您需要在schema.xml中定义DefaultSearchField,即
<defaultSearchField>FieldName</defaultSearchField>
。您可以在
<SOLR_HOME>\apache-solr-3.6.0\example\example-DIH\solr\testsyndrome\conf\schema.xml
找到此文件我希望这就是你要找的。
weylhg0b2#
不要从SolrNet开始,使用Solr内置的Web Admin界面。在那里迭代,直到你理解了请求处理程序和参数。然后,回到SolrNet。
在您的例子中,似乎您更改了默认请求处理程序,并尝试使用df参数两次。我现在将坚持使用原始请求处理程序,以避免额外的问题。
通过使用df参数,您尝试搜索的是单个字段还是多个字段?如果是单个字段,则只保留该参数的一个值。如果是多个,则需要切换到使用eDisMax,在eDisMax中可以提供一组字段。
同样,管理界面允许您试验它,然后您可以将它添加到处理程序的默认参数中。