Solr edismax查询语法错误“查询字段'_text_'不是有效的字段名称”

时间:2019-11-26 05:32:07

标签: solr solr8

我最初是在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
}
}

根据评论,“ 文本”字段在配置中保留在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_"}}]

1 个答案:

答案 0 :(得分:0)

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

  

尽管它们已经过时了很长时间,Solr仍然有   支持[user@host dir]$ export TZ=EST+5EDT,M3.2.0,M11.1.0 [user@host dir]$ echo $TZ EST+5EDT,M3.2.0,M11.1.0 [user@host dir]$ ./test_tz TZ=EST+5EDT,M3.2.0,M11.1.0 2019-11-26T12:25:20-0500 2019-11-26T19:25:20+0200 2019-11-26T12:25:20-0500 的基于架构的配置   (由<defaultSearchField/>参数取代)和df(由<solrQueryParser defaultOperator="OR"/>参数取代。

     

如果在架构中指定了这些选项,则表示   鼓励将其替换为请求参数(或请求   参数默认值),因为将来可能会删除对它们的支持   Solr发布。

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