Skip to content

Latest commit

 

History

History
58 lines (50 loc) · 1.87 KB

README.md

File metadata and controls

58 lines (50 loc) · 1.87 KB

Tantex

This is an experimental lib for interacting with tantivy from Elixir.

Installation

If available in Hex, the package can be installed by adding tantex to your list of dependencies in mix.exs:

def deps do
  [
    {:tantex, "~> 0.1.0"}
  ]
end

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/tantex.

Example Placeholder

iex(1)> {:ok, index} = Tantex.open("./data/demo", [Tantex.Field.build("name", :text), Tantex.Field.build("age", :u64, stored: true, fast: true)])
{:ok,
 %Tantex.Index{
   __ref__: #Reference<0.670193976.377618434.7366>,
   fields: [
     %Tantex.Field{fast: true, kind: :u64, name: "age", stored: true},
     %Tantex.Field{fast: false, kind: :text, name: "name", stored: true}
   ],
   path: "./data/demo"
 }}
iex(2)> {:ok, id1} = Tantex.insert_documents(index, [%{name: "jason", age: 35}])
{:ok, 1}
iex(3)> {:ok, id2} = Tantex.insert_documents(index, [%{name: "jason goldberger", age: 36}])
{:ok, 2}
iex(4)> {:ok, id3} = Tantex.insert_documents(index, [%{name: "jason louis goldberger", age: 37}])
{:ok, 3}
iex(5)> Tantex.find_one(index, "age", 35){:ok, %{"age" => '#', "name" => ["jason"]}}
iex(6)> Tantex.find_many(index, ["name"], "jason", 2)
{:ok,
 [
   %{"age" => '#', "name" => ["jason"]},
   %{"age" => '$', "name" => ["jason goldberger"]}
 ]}
iex(7)> Tantex.find_many(index, ["name"], "jason", 10)
{:ok,
 [
   %{"age" => '#', "name" => ["jason"]},
   %{"age" => '$', "name" => ["jason goldberger"]},
   %{"age" => '%', "name" => ["jason louis goldberger"]}
 ]}
iex(8)> Tantex.find_one(index, "age", "wrong_type_here")
{:error, {:invalid_field_data, "type: U64 - field_name: \"age\""}}