有人可以告诉我如何在所有领域搜索Solr吗?
这是我当前的requestHandler,名为“search”并使用solr.SearchHandler。
<requestHandler name="search" class="solr.SearchHandler" default="true">
<!-- default values for query parameters can be specified, these
will be overridden by parameters in the request
-->
<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">10</int>
</lst>
</requestHandler>
似乎我可以搜索所有文本字段,但是我需要搜索名为's_number'的字段,这是一个整数。
我是否需要使用DisMax才能搜索所有字段?
另外,我是否需要调整schema.xml中的defaultSearchField?目前:
<defaultSearchField>text</defaultSearchField>
答案 0 :(得分:4)
您正在讨论的defaultSearchField
参数在schema.xml中引用此字段:
<!-- catchall field, containing all other searchable text fields (implemented
via copyField further on in this schema -->
<field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>
如果你向下看一点,你应该看到如下的陈述:
<copyField source="name" dest="text"/>
<copyField source="summary" dest="text"/>
您可能要做的是为s_number
字段添加copyfield参数,如下所示:
<copyField source="s_number" dest="text"/>
这会将数字字段复制到默认搜索字段(文本)中。文本字段是默认搜索的术语“倾销地”。关于它的好处是你可以控制如何以及将什么信息放入默认搜索中。不好的是,你需要为默认的每个字段添加copyField参数。
答案 1 :(得分:0)
要搜索非文本字段,您可能不必编辑配置文件。您只需要将参数正确添加到solr查询中。
基本思路是你可以使用键/值对来搜索非文本字段。请参阅http://wiki.apache.org/solr/SolrQuerySyntax。
要仅搜索s_number,您可以将查询设置为solr服务器,如下所示:
q=s_number:123
这将仅返回s_number为123的结果,如预期的那样 - 并且它将作为常规搜索而不是搜索后过滤器。我不知道你正在使用什么php solr库,所以我不能给你如何在你的代码中设置这个查询参数的确切代码。如果您告诉我您正在使用的库和/或发布实际进行搜索的源代码,我可能会为您提供更准确的详细信息。
但是直接与你的solr服务器交谈,查询看起来像这样:
http://your-solr-server:8983/solr/select/?q=s_number%3A123