• 基本用法
MATCH 子句允许在文本字段中进行全文搜索。输入的查询字符串使用与索引时相同的设置进行分词。除了对输入文本进行分词外,查询字符串还支持许多全文操作符,这些操作符对关键词的匹配方式施加了各种规则。
全文匹配子句可以与属性过滤器结合使用,作为布尔值 AND 关系。不支持全文匹配与属性过滤器之间的 OR 关系。
在过滤过程中,匹配查询始终首先执行,然后应用属性过滤器。属性过滤器应用于匹配查询的结果集。没有匹配子句的查询称为全扫描查询。
在 SELECT 子句中最多只能有一个 MATCH()。
使用全文查询语法时,匹配会在文档的所有已索引文本字段中执行,除非表达式要求在字段内匹配(如短语搜索)或被字段操作符限制。
SQL
SELECT * FROM myindex WHERE MATCH('cats|birds');SELECT 语句使用 MATCH 子句来执行全文搜索,该子句必须位于 WHERE 之后。MATCH() 接受一个输入字符串,所有的 全文操作符 都可用。
SQL:
SELECT * FROM myindex WHERE MATCH('"find me fast"/2');+------+------+----------------+
| id | gid | title |
+------+------+----------------+
| 1 | 11 | first find me |
| 2 | 12 | second find me |
+------+------+----------------+
2 rows in set (0.00 sec)一个使用 MATCH 与 WHERE 过滤器的更复杂查询示例。
HTTP JSON
全文匹配可以在 /search 端点和基于 HTTP 的客户端中使用。以下子句可用于执行全文匹配:
match
“match” 是一个简单的查询,用于在指定字段中匹配指定的关键字。
您可以指定字段列表:
或者您可以使用 _all 或 * 搜索所有字段。
您还可以通过使用 !field 排除某个字段来进行搜索:
默认情况下,关键字通过 OR 操作符组合。但是,您可以使用 operator 子句更改此行为:
operator 可以设置为 “or” 或 “and”。
还可以应用 boost 修饰符。它通过提高在排名分数中包含 IDF 计算的词语 IDF_score 来提升得分。这不会影响匹配过程。
match_phrase
"match_phrase"是一个查询,它匹配整个短语。它类似于 SQL 中的短语操作符。以下是一个示例:
query_string
"query_string" 接受一个输入字符串作为 MATCH() 语法的全文查询。
match_all
"match_all" 接受一个空对象,并从表中返回文档,而不进行任何属性过滤或全文匹配。或者,您可以在请求中省略 query 子句,这将产生相同的效果。
将全文过滤与其他过滤器组合
所有全文匹配子句都可以与 must,must_not 和 should 操作符组合在 JSON bool 查询 中。
示例:
Python
javascript
java
C#
TypeScript
Go
最后更新于