Skip to main content
Glama
by OpaqueGlass
query_syntax.md2.45 kB
在使用查询语法之前,我们先大致了解一下该语法的构成: * 字符串(String):由字母、数字等构成 * 短语(Phrase):由字符串构成 * 查询(Query):由短语构成,多个查询可通过 `AND`、`OR` 和 `NOT` 组合为新的查询 下面我们分别介绍它们的细节。 ## 字符串 字符串可由两种方式指定: * 通过英文双引号 `"` 包裹起来的字符。其中如果需要使用 `"` 本身,则可通过 SQL 风格转义(再加一个`"`),例如 `"foo""bar"""` 将搜索命中 `foo"bar"` * 由非 `AND`、`OR` 和 `NOT` 字符组成,并且这些字符必须是: * 所有非 ASCII 字符,或者 * 属于 52 个大小写英文字符(`A-Za-z`),或者 * 属于 10 个 ASCII 数字字符(`0-9`),或者 * 是下划线 `_`,或者 * 是替换符(ASCII 26) 对于非上述的其他字符构成的字符串,必须使用 `"` 包裹起来,比如包含了 `-`、`*` 等符号的字符串。 ## 短语 短语由字符串构成,可由 `+` 进行连接。一个短语是由一些记号(Token)有序构成,这些记号由用户的输入文本通过分词器处理得到。思源使用的分词器为了让中文搜索好用(支持单字搜索),所以实现方式是按照字分词的,也就是说每个汉字或者英文字母都会被拆分为一个记号。这对 `+` 连接会产生一些影响,所以如果不确定的话,建议不要使用 `+` 组合多个短语。 ## 查询 查询由多个短语构成,可通过操作符 `AND`、`OR` 和 `NOT` 组合为新的查询。 | 操作符 | 功能 | | -------- | ------------------------------- | | | query1 和 query2 同时匹配 | | | query1 或者 query2 匹配 | | | query1 匹配同时 query2 不匹配 | 使用英文圆括号 `()` 可以组合查询的优先级,例如: ```sql -- 匹配包含 "one" 或者 "two" 的块,不匹配包含 "three" 的块 'one OR two NOT three' -- 匹配包含 "one" 或者包含 "two" 且不包含 "three" 的块 'one OR (two NOT three)' ``` 使用空格分隔的多个短语默认使用 `AND` 连接,比如: ```sql 'one two three' -- 'one AND two AND three' 'three "one two"' -- 'three AND "one two"' 'one OR two three' -- 'one OR two AND three' '(one OR two) three' -- 语法错误! 'func(one two)' -- 语法错误! ```

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/OpaqueGlass/syplugin-anMCPServer'

If you have feedback or need assistance with the MCP directory API, please join our Discord server