我正在使用Elasticsearch 2.4.6。 我被要求建立一个搜索引擎来搜索部分和模糊的单词。
我有以下类似的数据结构(我删除了不相关的字段)
{
"name": "Servicios",
"subcategories": [
{
"name": "Inmobiliaria",
"tags": [
{
"name": "Administrador de fincas"
},
{
"name": "Residencia de ancianos"
},
{
"name": "Constructora"
}]
}]
},
{
"name": "Mascotas",
"subcategories": [
{
"name": "Tiendas de mascotas",
"tags": [
{
"name": "Tienda de animales"
},
{
"name": "Pajarerías"
},
{
"name": "Tienda de peces"
},
{
"name": "Repostería para mascotas"
},
{
"name": "Tienda de productos para mascotas"
},
{
"name": "Tienda de reptiles"
}]
},
{
"name": "Servicios para mascotas",
"tags": [
{
"name": "Veterinario "
},
{
"name": "Peluquería de mascotas"
}
]
}]
}
从他们想要输入xcotas
的网络应用中,第一个结果是Mascotas
。
我完成了部分匹配的搜索:
{
"query": {
"query_string": {
"query": "*scotas*",
"fields": [
"name",
"subcategories.name",
"subcategories.tags.name"
],
"default_operator": "AND"
}
}
}
另一方面,我寻找模糊的词语:
{
"query": {
"multi_match": {
"query": "maxcotas",
"fields": [
"name",
"subcategories.name",
"subcategories.tags.name"
],
"fuzziness": 2,
"operator": "and"
}
}
}
两次搜索都将我作为第一个结果Mascotas
给出,但如果我尝试将通配符添加到模糊查询或将模糊运算符添加到部分单词查询,则结果不符合预期。
注意:and
运算符用于多字搜索。
有没有办法将两个搜索组合成一个?