elasticsearch - 具有不同标记位置/偏移的模式捕获
问题描述
来自弹性搜索文档
注意:所有标记都在相同的位置发出,并且具有相同的字符偏移量。这意味着,例如,使用此分析器的 john-smith_123@foo-bar.com 的匹配查询将返回包含任何这些标记的文档,即使使用 and 运算符也是如此。此外,当与突出显示结合使用时,将突出显示整个原始标记,而不仅仅是匹配的子集。例如,在上述电子邮件地址中查询“smith”会突出显示: https ://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-pattern-capture-tokenfilter.html
有没有办法生成具有不同位置/偏移量的令牌?
鉴于弹性搜索提供的示例,我希望能够在com
AND上进行搜索,john
但据我了解,它将匹配包含com
或john
因为它们将被视为相同位置的所有电子邮件。
(在我的情况下,我想这样做以进行代码分析,与他们给出的 2 秒示例非常相似)
"analysis" : {
"filter" : {
"code" : {
"type" : "pattern_capture",
"preserve_original" : true,
"patterns" : [
"(\\p{Ll}+|\\p{Lu}\\p{Ll}+|\\p{Lu}+)",
"(\\d+)"
]
}
},
解决方案
我不完全理解您的问题,但看起来您正在尝试做的是:确保索引标记器按照您的预期破坏输入,这意味着有一个“com”标记和“john”标记。您可以通过运行分析请求来检查标记器:https ://www.elastic.co/guide/en/elasticsearch/reference/current/indices-analyze.html
在输入按预期进行分析和标记后,您可以运行 John AND com 查询,它应该按预期工作。
推荐阅读
- opencv - 图像校正后的固有相机矩阵
- node.js - 在无服务器应用程序上同步 Sequelize 数据库
- javascript - Firebase 实时数据库 - orderByChild().equalTo() 不返回预期节点
- c# - 如何使用分层模板实现自定义 SignInManager?
- python - 在没有本地资源的情况下导入 Python 数据
- jquery - 如何将数组添加到现有的 json localstorage 元素?
- svg - 如何在 Cocos Creator 中渲染 SVG 文件?
- python - OpenCV DFT函数在C++和Python之间给出了不同
- c - timer_create 函数返回 EINVAL
- c++11 - 如何在 grpc 服务中迭代 protobuffer 重复字段?