updated vendor
This commit is contained in:
parent
577cf4d482
commit
5e9ce5a306
8 changed files with 1306 additions and 5 deletions
202
vendor/github.com/bcampbell/qs/syntax.md
generated
vendored
Normal file
202
vendor/github.com/bcampbell/qs/syntax.md
generated
vendored
Normal file
|
|
@ -0,0 +1,202 @@
|
|||
# Query String Syntax
|
||||
|
||||
## Basics
|
||||
|
||||
Single words are treated as simple terms. The results will include
|
||||
documents containing those terms, eg:
|
||||
|
||||
embiggen
|
||||
cromulent
|
||||
|
||||
Terms are separated by spaces, so:
|
||||
|
||||
navel orange
|
||||
|
||||
Will match both documents containing "navel" and documents containing "orange",
|
||||
which is probably not what was intended. The user was probably looking for
|
||||
documents about "navel oranges" rather than those about "orange navels".
|
||||
|
||||
To search for phrases - multiple words, matched in order - enclose them in double quotes.
|
||||
|
||||
For example:
|
||||
|
||||
"navel orange"
|
||||
|
||||
## Boolean Operators
|
||||
|
||||
### `OR`
|
||||
|
||||
The `OR` operator returns documents matched by terms on either side of it.
|
||||
It is the default operator, meaning that the following two queries are
|
||||
considered to be equivalent:
|
||||
|
||||
orange OR "navel orange"
|
||||
orange "navel orange"
|
||||
|
||||
Note that the query parser can be set up to use `AND` as the default operator instead of `OR`.
|
||||
|
||||
### `AND`
|
||||
|
||||
'`AND`' returns documents which match the terms on *both* sides.
|
||||
|
||||
orange AND citrus
|
||||
|
||||
### `+`
|
||||
|
||||
'`+`' is the 'required' operator. A term prefixed with '`+`' must exist in matching
|
||||
documents.
|
||||
|
||||
For example, to return documents definitely containing "orange" and maybe also
|
||||
containing "fruit":
|
||||
|
||||
fruit +orange
|
||||
|
||||
|
||||
### `NOT`
|
||||
|
||||
`NOT` excludes documents that match the following term.
|
||||
|
||||
For example, to match documents containing "orange" but not "paint":
|
||||
|
||||
orange NOT paint
|
||||
|
||||
|
||||
### `-`
|
||||
|
||||
Prefixing a term with '`-`' will "prohibit" it.
|
||||
|
||||
For example, to match documents containing "orange" but not "paint":
|
||||
|
||||
orange -paint
|
||||
|
||||
|
||||
### Precedence
|
||||
|
||||
`-`, `+` and `NOT` take precedence over `AND`, which takes precedence over `OR`.
|
||||
|
||||
For example,
|
||||
|
||||
lemon OR orange AND citrus
|
||||
|
||||
is treated as:
|
||||
|
||||
lemon OR (orange AND citrus)
|
||||
|
||||
|
||||
|
||||
## Field Scoping
|
||||
|
||||
You can control which fields are matched by prefixing the name of a field separated by a colon.
|
||||
|
||||
Examples:
|
||||
|
||||
genus:citrus
|
||||
headline:"How to Make the Perfect Negroni"
|
||||
tags:(fruit OR paint)
|
||||
|
||||
If no field is specified, the default `_all` is used, unless overridden in the index mapping.
|
||||
|
||||
|
||||
## Grouping
|
||||
|
||||
Parentheses can be used to group sub queries.
|
||||
For example:
|
||||
|
||||
(shaddock OR pomelo OR pamplemousse) AND (family:rutaceae AND NOT genus:fortunella) AND colour:(greenish OR yellowish)
|
||||
|
||||
## Wildcards
|
||||
|
||||
Within an individual term, partial matches can be described using wildcard characters:
|
||||
|
||||
`?` to match any single character
|
||||
|
||||
`*` To match and sequence of zero or more characters
|
||||
|
||||
For example:
|
||||
|
||||
qu?ck bro*
|
||||
|
||||
|
||||
## Fuzziness
|
||||
|
||||
A fuzzy query is a term query that matches terms within a given [Levenshtein distance](https://en.wikipedia.org/wiki/Levenshtein_distance).
|
||||
The edit distance is the number of single-character edits (insertions, deletions or substitutions) allowed.
|
||||
|
||||
To specify a fuzzy query, use the tilde sign (`~`), optionally followed by the edit distance you'll accept.
|
||||
|
||||
|
||||
For example,
|
||||
|
||||
colour~1
|
||||
|
||||
to match "`colour`" or "`color`" (or "`zolour`" or "`colours`"... but not "`colors`", as the `~1` allows only a single character change).
|
||||
|
||||
If no number is specified, the default value is 1, so the following are equivalent:
|
||||
|
||||
wibble~
|
||||
wibble~1
|
||||
|
||||
|
||||
|
||||
## Boosting
|
||||
|
||||
Boosting a term doesn't affect the set of matching documents, but it does
|
||||
indicate that that term should be assigned greater importance when the
|
||||
results are being scored by relevance.
|
||||
|
||||
To boost a term, you use the boost operator '`^`' followed by a number
|
||||
indicating the relative importance of the term.
|
||||
|
||||
For example, in the following query, "grapefruit" should be considered twice
|
||||
as important as "lime":
|
||||
|
||||
grapefruit^2 lime
|
||||
|
||||
You can boost more complex sub queries:
|
||||
|
||||
(grapefruit OR orange)^2 "navel orange"^4 genus:citrus
|
||||
|
||||
|
||||
|
||||
## Ranges
|
||||
|
||||
Inclusive ranges can be described with square braces and `TO`, eg:
|
||||
|
||||
num:[1 TO 5]
|
||||
date:[2010-01-01 TO 2010-01-31]
|
||||
|
||||
Dates must be in `YYYY-MM-DD` form.
|
||||
|
||||
Exclusive ranges are supported using curly braces. So, these are equivalent:
|
||||
|
||||
score:{0 TO 10}
|
||||
score:[1 TO 9]
|
||||
|
||||
|
||||
|
||||
You can mix inclusive and exclusive endpoints, eg:
|
||||
|
||||
pubdate:[2010-01-01 TO 2011-01-01}
|
||||
shoesize:{0 TO 16]
|
||||
byte:[0 TO 256}
|
||||
|
||||
You can have open ranges by leaving off either endpoint:
|
||||
|
||||
pubdate:[2000-01-01 TO ]
|
||||
temp:[TO 100}
|
||||
|
||||
|
||||
NOTE: ranges currently work only on numeric and date fields.
|
||||
|
||||
|
||||
## Relational Operators
|
||||
|
||||
You can perform numeric comparisons using the `>`, `>=`, `<`, and `<=` operators.
|
||||
These are equivalent to using the above range syntax with unbounded ranges.
|
||||
|
||||
For example:
|
||||
|
||||
score:>=100
|
||||
score:[ TO 100]
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue