1. 前缀搜索(prefix)
小白理解 :
就是查"以某个词开头"的内容,比如你搜"app",能搜到"apple"、"application"等。
- 只看词(term)是不是以你给的前缀开头,不管是不是完整的字段。
- 性能不太好,速度慢,最好前缀长一点。
- 没有缓存,查询多了也不会变快。
2. 通配符(wildcard)
小白理解 :
就是查"带有某种模式"的内容,比如"a*e"能搜到"apple"、"ace"等。
*
代表任意多个字符,?
代表一个字符。- 也是对词(term)做匹配,不是对整个字段。
3. 正则(regexp)
小白理解 :
就是用正则表达式查内容,比如"a.*e"能搜到"apple"、"ace"、"abcde"等。
- 正则表达式可以很灵活,但复杂的正则会很慢。
- 有些特殊功能(如区间、否定、交集等)可以通过 flags 开启。
4. 模糊查询(fuzzy)
小白理解 :
就是查"拼写差不多"的内容,比如你输错了"applr",也能搜到"apple"。
- 能容忍拼写错误、缺字、多字、顺序颠倒等。
- 可以设置"模糊度",越大越宽松,但结果可能不准。
5. 短语前缀(match_phrase_prefix)
小白理解 :
就是查"以某个短语开头"的内容,比如"this is ma"能搜到"this is man"、"this is magic"。
- 会先分词,然后最后一个词用前缀匹配。
- 适合输入一半的短语时做自动补全。
6. N-gram 和 edge ngram
小白理解 :
这是一种把词拆成很多小片段(子串)的技术,方便做模糊和前缀搜索。
- ngram :从每个字符都开始拆,比如"abc"会拆成"a"、"ab"、"abc"、"b"、"bc"、"c"。
- 适合"中间模糊"检索,比如"abc"能搜到"b"。
- edge_ngram :只从第一个字符开始拆,比如"abc"会拆成"a"、"ab"、"abc"。
- 适合"前缀"检索,比如"abc"能搜到"a"、"ab"。
总结表
查询类型 | 适用场景 | 小白理解举例 |
---|---|---|
prefix | 前缀匹配 | "app"搜"apple" |
wildcard | 模糊匹配 | "a*e"搜"apple" |
regexp | 正则灵活匹配 | "a.*e"搜"apple" |
fuzzy | 拼写错误容忍 | "applr"搜"apple" |
match_phrase_prefix | 短语前缀补全 | "this is ma"搜"this is man" |
ngram | 任意位置模糊 | "b"搜"abc" |
edge_ngram | 前缀模糊 | "ab"搜"abc" |