我在 elasticserch 中有数百个书名的索引,文件如下:
{"_id": 123, "title": "The Diamond Age", ...}
而且我有一个用户输入的自由格式文本块。整个文本块可能包含许多书名,大小写不同。
我想在文本块中找到所有书名,以便我可以链接到特定的书页。
知道我该怎么做吗?我一直在寻找文本块中的精确短语匹配,但没有运气。
我在 elasticserch 中有数百个书名的索引,文件如下:
{"_id": 123, "title": "The Diamond Age", ...}
而且我有一个用户输入的自由格式文本块。整个文本块可能包含许多书名,大小写不同。
我想在文本块中找到所有书名,以便我可以链接到特定的书页。
知道我该怎么做吗?我一直在寻找文本块中的精确短语匹配,但没有运气。
您需要将字段标题索引为 not_analyzed 或使用关键字分析器。这将告诉 elasticsearch 在您发送查询时不对字段执行任何操作,这将使您能够进行完全匹配搜索。
我建议您保留已分析版本和未分析版本,以便能够进行精确搜索和已分析搜索。您的映射将像这样,在这种情况下,我假设类型名称是您的情况下的电影。
"mappings":{
"movies":{
"properties":{
"title":{
"type": "string",
"fields":{
"row":{
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
这将为您提供两个字段标题,其中包含分析的标题和 title.row,其中包含索引的确切值,绝对没有处理。
如果您输入了一个确切的 title.row 将匹配