问题描述
{"size": 1000,"query": {"query_string": {"query": "( string1 )"}}}
假设我的string1 =产品,如果某一种事故类型引起了某些人忘记了o
有没有办法搜索
{"size": 1000,"query": {"query_string": {"query": "( prdct )"}}}
还必须返回prdct +产品的结果
解决方法
您可以使用df.div
返回包含与搜索词相似的词的文档。请参阅此fuzzy query,以获得有关模糊查询的详细说明。
自此以来,您有更多的编辑距离来匹配prdct
。模糊性参数可以定义为:
0,1,2
0..2 = Must match exactly
3..5 = One edit allowed
More than 5 = Two edits allowed
索引数据:
{
"title":"product"
}
{
"title":"prdct"
}
搜索查询:
{
"query": {
"fuzzy": {
"title": {
"value": "prdct","fuzziness":15,"transpositions":true,"boost": 5
}
}
}
}
搜索结果:
"hits": [
{
"_index": "my-index1","_type": "_doc","_id": "2","_score": 3.465736,"_source": {
"title": "prdct"
}
},{
"_index": "my-index1","_id": "1","_score": 2.0794415,"_source": {
"title": "product"
}
}
]
,
有很多解决此问题的方法:
- Suggestions(是不是您指的是X)。
- Fuzziness(根据您原来的搜索字词进行编辑)。
- 具有自动完成功能的部分匹配(如果有人键入“ pr”,并且您提供了可用的搜索词,则他们可以立即单击正确的结果)或n-gram(匹配字母组)。
所有这些都需要权衡索引/搜索开销以及经典的精度/召回问题。