假设我们有一个搜索查询吸尘器WSP 6666 C 22 C 2 KW橡胶,我们希望将其与索引匹配。被索引的产品有:
...
"categories": [
"Vacuum cleaner",
"Blender",
],
"modelnumbers": [
"WSP 6666 C 22 C 2 KW",
"ABST 23",
"2h28f7h2i3f",
]
现在我想在两个类别上都匹配为型号
{
"query": {
"function_score": {
"query": {
"bool": {
"should": [
{
"query_string": {
"query": "Vacuum cleaner WSP 6666 C 22 C 2 KW rubber",
"default_operator": "OR",
"default_field": "categories",
"boost": "10"
}
},
{
"query_string": {
"query": "Vacuum cleaner WSP 6666 C 22 C 2 KW rubber",
"default_operator": "OR",
"default_field": "modelnumbers",
"boost": "10"
}
}
}
}
}
这显示了正确的结果。但是,现在它在以下所有条件上均匹配:
token 生成器是否有可能仅找到匹配项的方法?:
如您所见,并非所有的正则表达式都具有相同的格式,因此无法使用正则表达式标记程序。
最佳答案
处理此问题的正确方法是使用(edge-)ngram索引数据。但是在执行此操作之前,您可能想要尝试使用与您关心的字段匹配的multi_match
查询:
{
"query": {
"multi_match": {
"query": "Vacuum cleaner WSP 6666 C 22 C 2 KW rubber",
"fields": [
"categories",
"modelnumbers"
]
}
}
}
关于elasticsearch - 查询匹配模式标记器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48666627/