Description

giza is a client library for the Sphinx search engine (http://www.sphinxsearch.com). It speaks Sphinx’s binary searchd protocol natively. This fork is meant to update the library to the point where it can be used with modern Sphinx and be included as a dependency in elixir. I am doing testing from the Phoenix Framework http://www.phoenixframework.org/

giza currently supports the following features:

To Do:

Examples

  1. Performing a simple search: <pre> Query = giza_query:new(“users”, “frederickson”), Results = giza_request:send(Query) </pre>
  2. Performing a paginated search: <pre> Q = giza_query:new(“users”, “frederickson”), Q1 = giza_query:offset(Q, 10), Results = giza_request:send(Q1) </pre>
  3. Querying a non-default host: <pre> Q = giza_query:new(“users”, “frederickson”), Q1 = giza_query:host(Q, “search.somewhere”), Results = giza_request:send(Q1) </pre>
  4. Using giza’s attribute filtering: <pre> Q = giza_query:new(“users”, “frederickson”), %% This is an inclusionary filter by default Q1 = giza_query:add_filter(Q, “user_type”, [1,3,5]), Results = giza_request:send(Q1) </pre> <pre> Q = giza_query:new(“users”, “frederickson”), %% Filter with explicit exclude info (exclude == true) Q1 = giza_query:add_filter(Q, “user_type”, true, [1,3,5]), Results = giza_request:send(Q1) </pre>
  5. Updating a Sphinx index using giza: <pre> U = giza_update:new(“users”), U1 = giza_update:add_attribute(U, “user_type”), U2 = giza_update:add_doc(U1, 12345, [1]), %% Returns number of docs updated giza_request:send(U2), </pre>