在Elasticsearch中,我想找到与我的搜索 Realm 相关的相关记录,例如stackoverflow相关的问题建议,这意味着匹配彼此相近的搜索结果。
例如,我从以下数据中搜索“男鞋”
然后,如何通过搜索项目“男鞋”获得更多相关的元组?并且我如何也可以获取与同义词相关的数据。男士鞋类。
在Kibana中批量插入
POST /atomap/product/_bulk
{"index":{"_id":"1"}}
{"name": "Girl's Shoe"}
{"index":{"_id":"2"}}
{"name": "Men's Shoe"}
{"index":{"_id":"3"}}
{"name": "Women's Shoe"}
{"index":{"_id":"4"}}
{"name": "Women's Shoe pink color"}
{"index":{"_id":"5"}}
{"name": "Women's Shoe red color"}
{"index":{"_id":"6"}}
{"name": "Boy's Shoe"}
{"index":{"_id":"7"}}
{"name": "Men's Shoe red color"}
{"index":{"_id":"8"}}
{"name": "Men's Shoe white color"}
{"index":{"_id":"9"}}
{"name": "Men's Shoe green color"}
{"index":{"_id":"10"}}
{"name": "Men's Shoe gray color"}
{"index":{"_id":"11"}}
{"name": "Men's footwear"}
我已经尝试过more like this
查询:GET /atomap/product/_search
{
"query": {
"more_like_this": {
"like": "Men's shoe",
"min_term_freq": 1,
"min_doc_freq": 1
}
}
}
我的问题是。如何搜索相关单词? 因为当我搜索“男鞋”时More Like This Query在顶部找不到“男鞋”。
最佳答案
创建同义词和字段映射:
PUT /atomap
{
"settings": {
"analysis": {
"filter": {
"my_synonym_filter": {
"type": "synonym",
"synonyms": [
"shoe,footwear",
"color,colour"
]
}
},
"analyzer": {
"my_synonyms": {
"tokenizer": "standard",
"filter": [
"lowercase",
"my_synonym_filter"
]
}
}
}
},
"mappings":{
"product" : {
"properties" : {
"name" : {
"type" : "string",
"analyzer" : "my_synonyms"
}
}
}
}
}
然后插入所有数据,然后运行以下查询:
POST /myshop/_search
{
"query": {
"query_string": {
"default_field": "name",
"query": "Men's shoe",
"analyzer": "my_synonyms"
}
}
}
关于elasticsearch - 如何在Elasticsearch中找到与我的搜索字段相关的相关记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43022729/