0

我正在将 solr 从 4.6 版本迁移到 5.5,我们有单独的请求处理程序,我们在其中提供不带字段名称的查询,例如 q=book。但是对于选择请求处理程序,我们需要使用字段名称传递请求,例如 q=type:book。如果我给出没有字段名,我曾经得到一个错误“没有在 df 中指定字段名”,这很好。但是在迁移到 5.5 之后,具有不同请求处理程序的请求也会显示此错误,并且只有当我通过浏览器点击查询时才会显示此错误。通过 java 代码进行相同的查询工作正常,并且下面提到的查询工作正常: http://localhost:8983/solr/publications?q=book&wt=xml 其中不起作用http://localhost:8983/solr /select?q=book&wt=xml&qt=/publications

这两个查询在 solr 4 版本中运行良好。

这个参数有什么变化吗?还是必须使用第一个请求?

4

1 回答 1

2

如果您不使用q参数指定字段名称。solr 使用默认字段名称,可以为 solrconfig.xml 文件中的每个请求处理程序指定该名称df

例子:

<requestHandler name="/select" class="solr.SearchHandler">
    <!-- 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>
       <str name="df">text</str>
     </lst>
  </requestHandler>

qt参数

solrconfig.xml 文件中有<requestDispatcher>默认设置为 false 的文件。

如果 requestDispatcher 设置为 true solr 请求

例如:http://localhost:8983/solr/select?q=book&wt=xml&qt=/publications

上面的请求使用“/select”表示如果您的配置文件中没有该名称的请求处理程序。Solr 不是错误,而是使用“qt”参数按名称查找处理程序

于 2017-06-01T11:43:24.970 回答