【问题标题】:Solr edismax query syntax error "Query Field '_text_' is not a valid field name"Solr edismax 查询语法错误“查询字段'_text_'不是有效的字段名称”
【发布时间】:2020-03-21 11:36:07
【问题描述】:

我最初在我的 solr 架构中创建了 3 个复制字段:

curl -X POST -H 'Content-type:application/json' --data-binary '{"add-copy-field": {"source":"company_name","dest":"_text_"}}' http://my-instance/solr/listing/schema
curl -X POST -H 'Content-type:application/json' --data-binary '{"add-copy-field": {"source":"address","dest":"_text_"}}' http://my-instance/solr/listing/schema
curl -X POST -H 'Content-type:application/json' --data-binary '{"add-copy-field": {"source":"city","dest":"_text_"}}' http://my-instance/solr/listing/schema

但是,我最近从架构中删除了这些,现在正在以稍微不同的格式编写查询。更高级的查询我们需要edismax。

但是,即使打开 edismax,我也会收到来自 solr 查询解析器的错误,如下所示。我是否通过删除复制字段破坏了某些内容?

/solr/listing/select?debugQuery=on&defType=edismax&q=%3A&stopwords=true

{
"responseHeader": {
"zkConnected": true,
"status": 400,
"QTime": 1,
"params": {
"q": "*:*",
"defType": "edismax",
"debugQuery": "on",
"stopwords": "true"
}
},
"error": {
"metadata": [
"error-class",
"org.apache.solr.common.SolrException",
"root-error-class",
"org.apache.solr.common.SolrException"
],
"msg": "org.apache.solr.search.SyntaxError: Query Field '_text_' is not a valid field name",
"code": 400
}
}

根据 cmets,'text' 字段保留在配置中的 3 个位置:

"/update/extract":{
    "startup":"lazy",
    "name":"/update/extract",
    "class":"solr.extraction.ExtractingRequestHandler",
    "defaults":{
      "lowernames":"true",
      "fmap.content":"_text_"}}


"spellchecker":{
      "name":"default",
      "field":"_text_",


"initParams":[{
    "path":"/update/**,/query,/select,/tvrh,/elevate,/spell,/browse",
    "defaults":{"df":"_text_"}}]

【问题讨论】:

  • 您是否还定义了默认搜索字段? Default Search Field & Query Operator
  • 另外 - 检查 solrconfig.xml 中的请求处理程序的配置(或通过 API)。默认情况下,配置可能将_text_ 设置为dfqf

标签: solr solr8


【解决方案1】:

根据对我的问题的评论(我仍在学习 solr):

尽管它们已经被弃用了很长一段时间,但 Solr 仍然有 支持<defaultSearchField/> 的基于模式的配置 (被df 参数取代)和<solrQueryParser defaultOperator="OR"/>(被q.op 参数取代。

如果您在 Schema 中指定了这些选项,那么您强烈 鼓励用请求参数(或请求 参数默认值),因为将来可能会删除对它们的支持 Solr 发布。

出于我们的目的,并且由于我们使用的是 edismax 查询解析器,我们需要指定我们想要使用的查询字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-25
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-10
    • 1970-01-01
    相关资源
    最近更新 更多