用户需要检索和发觉符合条件的信息,ES如何帮忙?
1、用户如何问问题?
2、用户如何借助ES回答问题?
1)查询包含“john smith”短语的文档(文档中任何包含john smith字段均可以命中吗?是的,所有支持full-text搜索的字段均考虑在内): 全文检索之 短语匹配 match_phrase
2)如何高亮匹配的文本?:全文检索之高亮匹配字段
3)按某个字段对返回结果进行汇总/聚合/分组: aggregation, grouping?: 根据兴趣将结果进行分汇总。
3、有什么替代方案?
4、 ES 知识点总结
1) 多词、多字段查询语句: match_multi
多词: 查询语句包含多个词; 多字段: 查询在文档的多个字段进行。
可将多词、多字段查询分为几种情况?
single best field(最佳字段):在一个字段中出现多》分散在多个字段中》在一个字段中出现少
most fields(最多字段),
cross fields(跨字段:当前实现): field centirc versers term centric? term centric!!
2)你最希望的查询结果是什么?
在首页中返回给用户最相关的文档!!!最佳匹配排在最前面!!
返回所有相关文档 versers 不返回任何不相关文档!!!
如何调优相关度计算?: 想似词、 词根、方言
3)你希望查询的词之间按顺序出现的相关分数高!
match_phrase(非常严格的查询,每个分词都按照term匹配): 所有词都出现、并且按顺序,并且相邻
4)如何减少/限制match_phrase的查询开销?
5)partial update of a document
6) 结构化查询 or 全文检索?
7) 全文检索面临的核心问题是什么?
相关度计算、analysis(分词、计算反向索引,并查询反向索引表)
8)查询和过滤有什么不同?
查询:模式匹配?how relevance?
过滤:逻辑运算?yes or no
9)如果一个字段是array, 如何聚合?