tantivy-py/README.md

1.7 KiB

Build Status

tantivy-py

Python bindings for tantivy.

Installation

The bindings can be installed using setuptools:

python3 setup.py install --user

Note that this requires setuptools-rust to be installed. Another thing to note is that the bindings are using PyO3, which requires rust nightly and only supports python3.

Usage

tantivy-py has a similar API to tantivy. To create a index first a schema needs to be built. After that documents can be added to the index and a reader can be created to search the index.

    builder = tantivy.SchemaBuilder()

    title = builder.add_text_field("title", stored=True)
    body = builder.add_text_field("body")

    schema = builder.build()
    index = tantivy.Index(schema)

    writer = index.writer()

    doc = tantivy.Document()
    doc.add_text(title, "The Old Man and the Sea")
    doc.add_text(body, ("He was an old man who fished alone in a skiff in"
                        "the Gulf Stream and he had gone eighty-four days "
                        "now without taking a fish."))
    writer.add_document(doc)
    writer.commit()
    
    reader = index.reader()
    searcher = reader.searcher()

    query_parser = tantivy.QueryParser.for_index(index, [title, body])
    query = query_parser.parse_query("sea whale")

    top_docs = tantivy.TopDocs(10)
    result = searcher.search(query, top_docs)

    _, doc_address = result[0]

    searched_doc = searcher.doc(doc_address)
    assert searched_doc.get_first(title) == "The Old Man and the Sea"