在弹性搜索中进行搜索查询时如何忽略双斜杠?
How to ignore double slashes while making a search query in elastic search?
比如elasticsearch文档中,字符串存储为\\(\\log_4(3x^2+11x)=1\\)
我想让它起作用的搜索查询是 (log_4(3x^2+11x)=1).
完成这项工作的最佳方法是什么?
您可以使用 pattern_replace char filter,它可以将 \
替换为 empty string
,下面是工作示例。
使用 pattern_replace 字符过滤器的自定义分析器的索引设置
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"filter": [
"lowercase"
],
"char_filter": [
"my_char_filter"
],
"type": "custom",
"tokenizer": "whitespace"
}
},
"char_filter": {
"my_char_filter": {
"type": "pattern_replace",
"pattern": "\\(.*?)",
"replacement": ""
}
}
}
}
}
分析API
{
"analyzer": "my_analyzer",
"text": "\(\log_4(3x^2+11x)=1\)"
}
生成的令牌
{
"tokens": [
{
"token": "(log_4(3x^2+11x)=1)",
"start_offset": 1,
"end_offset": 22,
"type": "word",
"position": 0
}
]
}
比如elasticsearch文档中,字符串存储为\\(\\log_4(3x^2+11x)=1\\) 我想让它起作用的搜索查询是 (log_4(3x^2+11x)=1).
完成这项工作的最佳方法是什么?
您可以使用 pattern_replace char filter,它可以将 \
替换为 empty string
,下面是工作示例。
使用 pattern_replace 字符过滤器的自定义分析器的索引设置
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"filter": [
"lowercase"
],
"char_filter": [
"my_char_filter"
],
"type": "custom",
"tokenizer": "whitespace"
}
},
"char_filter": {
"my_char_filter": {
"type": "pattern_replace",
"pattern": "\\(.*?)",
"replacement": ""
}
}
}
}
}
分析API
{
"analyzer": "my_analyzer",
"text": "\(\log_4(3x^2+11x)=1\)"
}
生成的令牌
{
"tokens": [
{
"token": "(log_4(3x^2+11x)=1)",
"start_offset": 1,
"end_offset": 22,
"type": "word",
"position": 0
}
]
}