赞
踩
模糊查询,我们输入字符的大概,ES就可以去根据输入的内容大概去匹配一下结果;
注意:他和我们在MySQL中的模糊查询还是有区别的,他有个偏移值;比如:当我们在京东中输入appla 的时候他会出现许多apple(苹果),就像它有个自动修正似的;它就是按照匹配的相似度来的;也就是说,一些信息,有对的也有错误的,它会利用这些大概的信息,给我们匹配信息出来;
他有几个属性,例如:设置保证前几个是不能出错,设置最大的偏移量(也就是可以错误几个值)
#模糊查询fuzzy
GET /book/novel/_search
{
"query": {
"fuzzy": {
"name": {
"value": "我的好",
"fuzziness": 2 #偏差的个数
}
}
}
}
解释:name字段中的数据和关键字**“我的好”,进行匹配;”fuzziness”:2 含义是允许匹配的数字与关键字有最多两个字的偏差**(不同);
#模糊查询fuzzy
GET /book/novel/_search
{
"query": {
"fuzzy": {
"author": {
"value": "滔滔滔",
"prefix_length": 1 #指定前面几个字符是不允许出现错误的
}
}
}
}
解释:author字段中的数据和关键字“滔滔滔”,进行匹配;”prefix_length”: 1 含义是指定前面几个字符是不允许出现错误的;
注意:prefix_length 和fuzziness这两个属性是进一步筛选的,如果有些词语查不出来,原因是就算当没有这两个属性的时候也无法进行匹配出来;所以加上了这两个属性,就更不能匹配出来;这里要注意;如果有问题,就先把这两个属性先去掉试试;
@Test //fuzzy模糊查询
public void test18() throws IOException {
//把字段名,和关键字作为参数传进去;
QueryBuilder queryBuilder = QueryBuilders.fuzzyQuery("author","滔滔滔").prefixLength(3);
ClientUtils.queryTemplate(indextName,typeName,queryBuilder);
}
。。。。。。。。。。。。。
。。。。。。。。。。。。。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。