bleve初探(四)bleve支持的查询
时间:2022-8-4 作者:smarteng 分类: Go语言
Term
词条查询是最简单的查询。它在所提供的术语的索引中执行完全匹配。
Match
匹配查询,就像一个词条查询,但首先分析输入文本。试图使用该字段被索引时使用的相同分析器。
匹配查询可以选择性地执行模糊匹配。如果模糊性参数设置为非零整数,则分析的文本将与指定的模糊水平相匹配。另外,可以使用prefix_length参数来要求该项也具有指定长度的相同前缀。
Phrase
短语查询搜索指定位置和偏移量中出现的项。
短语查询正在为所有短语成分执行准确的词条匹配。如果您希望分析该短语,请考虑使用匹配短语查询。
Match Phrase
匹配短语查询就像短语查询,但分析输入文本并使用分析结果生成短语查询。
Prefix
前缀查询查找包含以提供的前缀开头的术语的文档。
Fuzzy
模糊查询是一个词条查询,用于匹配指定编辑距离(Levenshtein距离)内的术语。此外,您可以选择指定该术语必须具有指定长度的匹配前缀。
Conjunction
联合查询是一个复合查询。结果文件必须满足所有子查询。
Disjunction
析取查询是一个复合查询。结果文件必须满足可配置min数量的子查询。默认情况下,它min被设置为1。
Boolean
布尔查询是连接和析取查询的有用组合。该查询需要三个查询列表:
must - 结果文件必须满足所有这些查询
should - 结果文件应该至少满足minShould这些查询
must not - 结果文件不能满足任何这些查询
该minShould值是可配置的,但如果至少有1个查询,则默认为1。
Numeric Range
数字范围查询将在指定范围内的指定字段中查找包含数值的文档。您可以省略一个端点,但不能省略两个端点。inclusiveMin和inclusiveMax属性控制是否包含或排除端点。
Date Range
日期范围查询在指定范围内的指定字段中查找包含日期值的文档。您可以省略一个端点,但不能省略两个端点。inclusiveStart和inclusiveEnd属性控制是否包含或排除端点。
Match All
匹配所有查询将匹配索引中的所有文档。
Match None
匹配none查询将不匹配索引中的任何文档。
Doc ID Query
文档ID查询将仅匹配包含提供的文档标识符之一的文档。
Query String
查询语言查询允许人类使用简单的语法来描述复杂的查询。
(1)Terms
没有任何其他语法的简单词条被解释为默认字段中词条的匹配查询。默认字段为_all,除非在indexmapping中重写默认字段。
(2)Phrases
短语查询可以通过将短语放在引号中来完成。
(3)Field Scoping
限定搜索的字段,方法是用冒号分隔的字段的名称作为前缀。
(4)Required, Optional, and Exclusion
当查询字符串包含多个项目时,默认情况下,这些项目将放置在布尔查询的SHOULD子句中。
可以通过在项目前加一个'+'或'-' 来改变这一点。
'+'前缀表示布尔查询的MUST部分中的项目。'-'前缀表示布尔查询的MUST NOT部分中的项目,空白表示SHOULD部分中的项目。
满足SHOULD条款的结果文档将得分高于那些不满足的
(5)Boosting
可以通过后缀条件与^运算符后跟一个数字来影响条款的相对重要性。
示例:description:water name:water^5将water在字段name和description字段中执行匹配查询,但在name字段中具有该字词的文档将得分更高。
(6)Numeric Ranges
可以使用>,> =,<和<=运算符执行数字范围,然后使用数字值。
例如:对于大于10的值,abv:>10,将在字段abv上执行一个数字范围查询。
(7)Date Ranges
可以使用>,> =,<和<=运算符执行日期范围搜索,然后使用引号将日期值。
例如:2016年9月21日后,created:>"2016-09-21",将在字段created上执行日期范围查询。
(8)Escaping
以下带引号的字符串枚举可能会被转义的字符:
"+-=&|><!(){}[]^\"~*?:\\/ "
注意:此列表包含空格字符。
为了转义这些字符,它们以\(反斜杠)字符作为前缀。在所有情况下,使用转义版本都会生成字符本身,并且不会被词法分析器解释。
示例:my\ name将被解释为具有值"my name"的匹配查询的单个词条。