39 lines
1.4 KiB
Markdown
39 lines
1.4 KiB
Markdown
|
# Reference
|
||
|
|
||
|
## Valid Query Formats
|
||
|
|
||
|
tantivy-py supports the [query language](https://docs.rs/tantivy/latest/tantivy/query/struct.QueryParser.html#method.parse_query) used in tantivy.
|
||
|
Below a few basic query formats are shown:
|
||
|
|
||
|
- AND and OR conjunctions.
|
||
|
```python
|
||
|
query = index.parse_query('(Old AND Man) OR Stream', ["title", "body"])
|
||
|
(best_score, best_doc_address) = searcher.search(query, 3).hits[0]
|
||
|
best_doc = searcher.doc(best_doc_address)
|
||
|
```
|
||
|
|
||
|
- +(includes) and -(excludes) operators.
|
||
|
```python
|
||
|
query = index.parse_query('+Old +Man chef -fished', ["title", "body"])
|
||
|
(best_score, best_doc_address) = searcher.search(query, 3).hits[0]
|
||
|
best_doc = searcher.doc(best_doc_address)
|
||
|
```
|
||
|
Note: in a query like above, a word with no +/- acts like an OR.
|
||
|
|
||
|
- phrase search.
|
||
|
```python
|
||
|
query = index.parse_query('"eighty-four days"', ["title", "body"])
|
||
|
(best_score, best_doc_address) = searcher.search(query, 3).hits[0]
|
||
|
best_doc = searcher.doc(best_doc_address)
|
||
|
```
|
||
|
|
||
|
- integer search
|
||
|
```python
|
||
|
query = index.parse_query('"eighty-four days"', ["doc_id"])
|
||
|
(best_score, best_doc_address) = searcher.search(query, 3).hits[0]
|
||
|
best_doc = searcher.doc(best_doc_address)
|
||
|
```
|
||
|
Note: for integer search, the integer field should be indexed.
|
||
|
|
||
|
For more possible query formats and possible query options, see [Tantivy Query Parser Docs.](https://docs.rs/tantivy/latest/tantivy/query/struct.QueryParser.html)
|