数据案例

  

1、匹配查询

  a、单词查询

    

  执行match步骤:

  ·检查field类型:title字段为(analyzed)字符串,所以搜索时,title需要被分析。

  ·分析查询字符串:QUICK! 经过标准分析器分后为quick

  ·找到匹配文档:再倒排索引中找到quick,并返回包含该词的文档(1,2,3)

  ·为每个文档打分:查询综合考虑词频( 每篇文档 title 字段包含 quick 的次数) 、 逆文档频率( 在全部文档中 title 字段包含 quick 的次数) 、

          包含 quick 的字段长度( 长度越短越相关) 来计算每篇文档的相关性得分 _score  

   b、多词查询

    

    

    <1> 文档4的相关度最高, 因为包含两个"brown"和一个"dog"。

    <2> 文档2和3都包含一个"brown"和一个"dog", 且'title'字段长度相同, 所以相关度相等。

    <3> 文档1只包含一个"brown", 不包含"dog", 所以相关度最低。
    因为 match 查询需要查询两个关键词: "brown" 和 "dog" , 在内部会执行两个 term 查询并
    综合二者的结果得到最终的结果。 match 的实现方式是将两个 term 查询放入一个 bool 查询, bool 查询在之前的章节已经介绍过。
    重要的一点是, 'title' 字段包含至少一个查询关键字的文档都被认为是符合查询条件的。匹配的单词数越多, 文档的相关度越高。

     提高精度

    默认匹配结果为或的关系,如brown dog 搜索结果为包含brown或者dog的文档

    match查询接受operator参数提高精度。默认operator=or

    

    match 查询有 'minimum_should_match' 参数, 参数值表示被视为相关的文档必须匹配的关键词个数。 参数值可以设为整数, 也可以设置为百分数。

    因为不能提前确定用户输入的查询关键词个数, 使用百分数也很合理

    

2、组合查询 

  

   计算得分

    把所有符合 must 和 should 的子句得分加起来, 然后除以 must 和 should 子句的总数为每个文档计算相关性得分。
    must_not 子句并不影响得分; 他们存在的意义是排除已经被包含的文档。

   精度控制

    所有的 must 子句必须匹配, 并且所有的 must_not 子句必须不匹配, 但是多少 should 子句应该匹配呢? 默认的, 不需要匹配任何 should 子句,

    一种情况例外: 如果没有 must 子句,就必须至少匹配一个 should 子句。像我们控制 match 查询的精度一样,

    我们也可以通过 minimum_should_match 参数控制多少 should 子句需要被匹配, 这个参数可以是正整数, 也可以是百分比。

    

    结果集仅包含 title 字段中有 "brown" 和 "fox" , "brown" 和 "dog" , 或 "fox" 和 "dog" 的文档。 如果一个文档包含上述三个条件, 那么它的相关性就会比其他仅包含三者中的两个条件的文档要高

最新文章

  1. MySQL安装,启动
  2. luogu[1135]奇怪的电梯
  3. Interview with BOA
  4. Hadoop学习笔记: sqoop配置与使用
  5. turing 项目引用
  6. oracle进制转换
  7. SDUT 最短路径(二维SPFA)
  8. ios 异步多线程 获取数据
  9. css多行文本居中
  10. Java 中使用Jackson反序列化
  11. 网站waf检测
  12. hihoCoder #1082 : 然而沼跃鱼早就看穿了一切(字符串处理)
  13. socket 编程--sockaddr与sockaddr_in区别与联系(转)
  14. 关于eclipse项目的x号报错的一些问题
  15. android中webView加载H5,JS不能调用问题的解决
  16. [Node.js]29. Level 6: Socket.io: Setting up Socket.io server-side &amp; Client socket.io setup
  17. UVALive-2531 The K-League (最大流建模+枚举)
  18. [CC-ANUCBC]Cards, bags and coins
  19. 跟着太白老师学python day11 函数名的应用 globals(), locals()
  20. Spring WebSocket入门(一) 转载

热门文章

  1. b站m4s视频混流
  2. Java--判空方法
  3. element中 popconfirm与tooltip同时使用
  4. Linuxt通过命令lsof或者extundelete工具恢复误删除的文件或者目录
  5. requests学习笔记02
  6. 你应该知道的 50 个 Python 单行代码
  7. Java集合-Set接口
  8. Account Manager privacy agreement
  9. 无线网络技术 实验2 无线网络环境RSSI测试实验
  10. KingbaseES V8R3集群运维案例之---kingbase_monitor.sh启动”two master“案例