0

我在 elasticserch 中有数百个书名的索引,文件如下:

{"_id": 123, "title": "The Diamond Age", ...}

而且我有一个用户输入的自由格式文本块。整个文本块可能包含许多书名,大小写不同。

我想在文本块中找到所有书名,以便我可以链接到特定的书页。

知道我该怎么做吗?我一直在寻找文本块中的精确短语匹配,但没有运气。

4

1 回答 1

0

您需要将字段标题索引为 not_analyzed 或使用关键字分析器。这将告诉 elasticsearch 在您发送查询时不对字段执行任何操作,这将使您能够进行完全匹配搜索。

我建议您保留已分析版本和未分析版本,以便能够进行精确搜索和已分析搜索。您的映射将像这样,在这种情况下,我假设类型名称是您的情况下的电影。

"mappings":{
  "movies":{
    "properties":{
      "title":{
        "type": "string",
        "fields":{
          "row":{
            "type": "string",
            "index": "not_analyzed"
          }
        }
      }
    }
  }
}

这将为您提供两个字段标题,其中包含分析的标题和 title.row,其中包含索引的确切值,绝对没有处理。

如果您输入了一个确切的 title.row 将匹配

于 2016-01-08T10:28:12.087 回答