search(11)- elastic4s-模糊查询
很多时候搜索用户对查询语句具有模糊感觉,他们只能提供大约的描述。比如一个语句的部分,或者字句顺序颠倒等。通过模糊查询可以帮助用户更准确的找出他们希望搜索的结果。
模糊查询包括前后缀,语句(phrase)查询。前缀查询在非文本查询和全文查询字段中使用是有着不同的效果:在非文本字段查询中我们需要严格按照词字顺序进行匹配,而全文查询中由于目标字段在构建索引时已经进行了分词处理,所以匹配是在分词中进行匹配的。下面是一些非文本前后缀查询的例子:
POST /bank/_search
{
"query" : {
"prefix" : {
"address.keyword": ""
}
}
}
POST /bank/_search
{
"query" : {
"wildcard": {
"address.keyword": "*Holmes*"
}
}
}
POST /bank/_search
{
"query" : {
"regexp": {
"address.keyword": ".*Holmes.*"
}
}
}
elastic4例子:
  val qPrefix = search("bank").query(prefixQuery("address.keyword",""))
  val qWildcard = search("bank").query(wildcardQuery("address.keyword","*Holmes*"))
  val qRegex = search("bank").query(regexQuery("address.keyword",".*Holmes.*"))
全文查询中常用match_phrase:这是一种语句查询。如:
GET /books/_search
{
"query": {
"match_phrase": {
"publisher": "人民出版社"
}
}
}
一个有意义的语句中每个字在句子中的位置都是按顺序的。“人民出版社”可能被分词成“人民”、“人民版”,“人民社”、“社“等。但实际上很多图书行内人称“人社版“。也就是说应该容许一定程度的灵活性,即字在句中的位置容许一定程度的错位。这个程度可以用slop来表示:
GET /books/_search
{
"query": {
"match_phrase": {
"publisher": {
"query": "人社版",
"slop" :
}
}
}
}
上面这个slop = 10 的意思是我们可以容许十步字距调整。slop值越大覆盖词段越广,不过可能会影响效率。elastic4请求表达如下:
  val qPhrase = search("books").query(
    matchPhraseQuery("PUBLISHER","人社版").slop()
  )
另外,match_phrase在用户录入查询条件时可以作为提示(auto-completion)或者即录即查(search_as_you_type)使用。这时用前缀查询match_phrase_prefix最为合适。因为可以兼顾英文到字母层级的录入查询:
GET /books/_search
{
"query": {
"match_phrase_prefix": {
"publisher": {
"query": "人社版",
"slop" :
}
}
}
}
用elastic4来表示:
  val qPhrasePfx = search("books").query(
    matchPhrasePrefixQuery("PUBLISHER","人社版").slop()
  )
search(11)- elastic4s-模糊查询的更多相关文章
- monggodb  模糊查询
		MongoDB的模糊查询其实很简单: 11.LIKE模糊查询userName包含A字母的数据(%A%) SQL:SELECT * FROM UserInfo WHERE user ... 
- 10 star组件之分页, search模糊查询, action批量处理
		1.分页组件高阶 1.分页的class形式(有bug,请看下面的) """ 自定义分页组件 """ class Pagination(obj ... 
- 可以执行全文搜索的原因 Elasticsearch full-text search  Kibana  RESTful API with JSON over HTTP  elasticsearch_action  es 模糊查询
		https://www.elastic.co/guide/en/elasticsearch/guide/current/getting-started.html Elasticsearch is a ... 
- mysql模糊查询1,11,111用逗号(其他符号)拼接的相似字符串
		mysql进行模糊查询时,基本都是LIKE "%sss%",有时候这种查询时准确的,但是有种情况这种查询会出现很大问题. 看一下下面这张表 如果想查询字段test包含1的数据,一般 ... 
- jquery  模糊查询下拉框
		<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD&g ... 
- java中实现对list的模糊查询
		比如我有下面这样一个List,里面存放的是多个Employee对象.然后我想对这个List进行按照Employee对象的名字进行模糊查询.有什么好的解决方案么?比如我输入的查询条件为“wang”,那么 ... 
- stark组件的分页,模糊查询,批量删除
		1.分页组件高阶 2.整合展示数据showlist类 3.stark组件之分页 3.stark组件之search模糊查询 4.action批量处理数据 4.总结 1.分页组件高阶 1.分页的class ... 
- easyUI combobox combotree 模糊查询,带上下键选择功能,待完善。。。。
		/2017年4月9日 11:52:36 /** * combobox和combotree模糊查询 * combotree 结果带两级父节点(手动设置数量) * 键盘上下键选择叶子节点 * 键盘回车键设 ... 
- Django模糊查询
		https://blog.csdn.net/liuweiyuxiang/article/details/71104613 def search(request): searchtype = reque ... 
- django ORM  增删改查 模糊查询  字段类型 及参数等
		ORM 相关 #sql中的表 #创建表: CREATE TABLE employee( id INT PRIMARY KEY auto_increment , name VARCHAR (), gen ... 
随机推荐
- PDF阅读器
			1.SumatraPDF 非常小巧,打开很轻快 2.PDF Reader by Xodo window商店中可以找到,很好用 3. PDFXChange Editor这是我迄今为止见过的最好的PDF编 ... 
- WinForm:API
			一.WndProc: 主要用在拦截并处理系统消息和自定义消息 比如:windows程序会产生很多消息,比如你单击鼠标,移动窗口都会产生消息.这个函数就是默认的消息处理函数.你可以重载这个函数来制定自 ... 
- stand up meeting 11/20/2015
			3组员 今日工作 工作耗时/h 明日计划 计划耗时/h 冯晓云 将输出string里的翻译合理取分为动名词等各种词性,按约定格式返回,按热度排列,但每一个词性下的解释仍然是由“$$”分词:对于查询词为 ... 
- selenium 键盘鼠标模拟
			一.键盘模拟常用的键 sendKeys(Keys.BACK_SPACE); //删除键--Backspace sendKeys(Keys.SPACE); //空格键 Space sendKeys ... 
- Java标识符中常见的命名规则
			标识符:就是给类,接口,方法,变量等起名字.组成规则:A:英文字母大小写B:数字字符C:$和_注意事项:A:不能以数字开头B:不能使Java中的关键字C:Java语言严格区分大小写常见的命名规则:见名 ... 
- 挑战全网最幽默的Vuex系列教程:第五讲 Vuex的小帮手
			先说两句 前面已经讲完了 Vuex 下的 State.Getter.Mutation 及 Action 这四驾马车,不知道大家是否已经理解.当然,要想真正熟练掌握的话,还是需要不断的练习和动手实践才行 ... 
- centos7与8的区别
			1.关于内核版本:RHEL8采用4.18.0-xRHEL7采用3.10-0-x 2 网络时间同步 RHEL8 只使用Chronyd,不支持NTP部署. RHEL7Chronyd与NTP两者都支持 3. ... 
- Inno setup: check for new updates
			Since you've decided to use a common version string pattern, you'll need a function which will parse ... 
- git取消跟踪(unversion)
			有时候我们会git add了一些不想跟踪的文件,通过下面的命令可以在没提交前从index里删掉跟踪记录(保留本地文件) git rm –cached 文件名 
- 信息竞赛进阶指南--KMP算法(模板)
			next[1] = 0; for (int i = 2, j = 0; i <= n; i++) { while (j > 0 && a[i] != a[j+1]) j = ... 
