Apache Solr 搜索

Apache Solr Search

我正在使用 Apache Solr search.I 使用数据导入 handler.But 从 mysql 导入数据 table 当我使用 q=KOHLI 代替 q=lastname:KOHLI,我没有得到任何结果。

这是对 q=lastname:KOHLI

的回复
{
  "responseHeader": {
      "status": 0,
      "QTime": 1,
      "params": {
      "q": "lastname:KOHLI",
      "indent": "true",
      "wt": "json",
      "_": "1427802213299"
    }
  },
  "response": {
     "numFound": 1,
     "start": 0,
     "docs": [
      {
        "lastname": "KOHLI",
        "town": "DELHI",
        "id": "2",
        "firstname": "VIRAT",
        "_version_": 1497158663291273200
      }
    ]
  }
}

schema.xml:

<copyField source="firstname" dest="text"/>
<copyField source="lastname" dest="text"/>
<copyField source="town" dest="text"/>
<field name="firstname" type="text_general" indexed="true" stored="true"/>
<field name="lastname" type="text_general" indexed="true" stored="true"/>
<field name="town" type="text_general" indexed="true" stored="true"/>`

您在使用查询解析器吗?如果是,在您的文件 solrconfig.xml 中,您在 requestHandler 中使用的查询字段是什么? (qf 参数)。如果您没有字段 lastname,这是正常行为。

如果您不使用查询解析器,在您的文件 schema.xml 中,您的 defaultSearchField 是什么?

你能添加 Solr 文件的片段吗?

当您没有指定搜索字段时,它会搜索默认搜索字段。如果你想执行这样的搜索,你可以创建新字段并将所有其他你想让它们成为搜索目标的字段复制到该字段,然后将其设置为默认搜索字段。

这里有一些资源:

这是因为您没有正确设置默认搜索字段。如果您没有在 "q" 中传递字段名称,它将搜索您在项目配置文件中设置的默认字段的输入。

要设置默认字段,您可以采用以下任一方式:

  1. 在您的 schema.xml 中,更改 <defaultSearchField>id</defaultSearchField><defaultSearchField>lastname</defaultSearchField>

  2. 运行 在您的 q 中使用 q={!type=dismax qf=lastname}KOHLI(如果在 Web 端口中,请删除 "q=")

参考:

查看查询类型缩写

https://archive.apache.org/dist/lucene/solr/ref-guide/apache-solr-ref-guide-4.9.pdf

希望对您有所帮助。谢谢。