Hui v0.7.0 Hui View Source

Hui 辉 (“shine” in Chinese) is an Elixir client and library for Solr enterprise search platform.

Usage

Link to this section Summary

Functions

Issue a MoreLikeThis (mlt) query to a specified Solr endpoint, raise an exception in case of failure

Issue a MoreLikeThis (mlt) query to a specified Solr endpoint

Issue a keyword list or structured query to the default Solr endpoint, raising an exception in case of failure

Issue a standard structured query with faceting request to the default Solr endpoint, raise an exception in case of failure

Convenience function for issuing various typical queries to the default Solr endpoint, raise an exception in case of failure

Issue a keyword list or structured query to the default Solr endpoint

Issue a standard structured query with faceting request to the default Solr endpoint

Convenience function for issuing various typical queries to the default Solr endpoint

Issue a keyword list or structured query to a specified Solr endpoint, raise an exception in case of failure

Issue a standard structured query with faceting request to a specified Solr endpoint, raise an exception in case of failure

Convenience function for issuing various typical queries to a specified Solr endpoint, raise an exception in case of failure

Issue a keyword list or structured query to a specified Solr endpoint

Issue a standard structured query with faceting request to a specified Solr endpoint

Convenience function for issuing various typical queries to a specified Solr endpoint

Issue a spell checking query to a specified Solr endpoint, raise an exception in case of failure

Issue a spell checking query to a specified Solr endpoint, raise an exception in case of failure

Issue a spell checking query to a specified Solr endpoint

Issue a spell checking query to a specified Solr endpoint

Issue a structured suggester query to a specified Solr endpoint, raise an exception in case of failure

Convenience function for issuing a suggester query to a specified Solr endpoint, raise an exception in case of failure

Issue a structured suggester query to a specified Solr endpoint

Convenience function for issuing a suggester query to a specified Solr endpoint

Link to this section Types

Link to this section Functions

Link to this function mlt!(url, query_struct, mlt_query_struct) View Source

Issue a MoreLikeThis (mlt) query to a specified Solr endpoint, raise an exception in case of failure.

Link to this function mlt(url, query_struct, mlt_query_struct) View Source
mlt(url(), Hui.Q.t(), Hui.M.t()) ::
  {:ok, HTTPoison.Response.t()} | {:error, Hui.Error.t()}

Issue a MoreLikeThis (mlt) query to a specified Solr endpoint.

Example

  query = %Hui.Q{q: "apache", rows: 10, wt: "xml"}
  mlt = %Hui.M{fl: "manu,cat", mindf: 10, mintf: 200, "match.include": true, count: 10}
  Hui.mlt(:library, query, mlt)

Issue a keyword list or structured query to the default Solr endpoint, raising an exception in case of failure.

See q/1.

Link to this function q!(query_struct, facet_struct) View Source
This function is deprecated. Use q!/1 instead, supply a list of structs as parameter.

Issue a standard structured query with faceting request to the default Solr endpoint, raise an exception in case of failure.

Link to this function q!(keywords, rows \\ nil, start \\ nil, filters \\ nil, facet_fields \\ nil, sort \\ nil) View Source
q!(
  binary(),
  nil | integer(),
  nil | integer(),
  nil | binary() | [binary()],
  nil | binary() | [binary()],
  nil | binary()
) :: HTTPoison.Response.t()

Convenience function for issuing various typical queries to the default Solr endpoint, raise an exception in case of failure.

Issue a keyword list or structured query to the default Solr endpoint.

The query can either be a keyword list, a standard query struct (Hui.Q) or a struct list. This function is a shortcut for search/2 with :default as URL key.

Example

  Hui.q(%Hui.Q{q: "loch", fq: ["type:illustration", "format:image/jpeg"]})
  Hui.q(q: "loch", rows: 5, facet: true, "facet.field": ["year", "subject"])

  # supply a list of Hui structs for more complex query, e.g. faceting
  Hui.q( [%Hui.Q{q: "author:I*", rows: 5}, %Hui.F{field: ["cat", "author_str"], mincount: 1}])

  # DisMax
  x = %Hui.D{q: "run", qf: "description^2.3 title", mm: "2<-25% 9<-3", pf: "title", ps: 1, qs: 3}
  y = %Hui.Q{rows: 10, start: 10, fq: ["edited:true"]}
  z = %Hui.F{field: ["cat", "author_str"], mincount: 1}
  Hui.q([x, y, z])
Link to this function q(query_struct, facet_struct) View Source
q(Hui.Q.t(), Hui.F.t()) ::
  {:ok, HTTPoison.Response.t()} | {:error, Hui.Error.t()}
This function is deprecated. Use q/1 instead, supply a list of structs as parameter.

Issue a standard structured query with faceting request to the default Solr endpoint.

Link to this function q(keywords, rows \\ nil, start \\ nil, filters \\ nil, facet_fields \\ nil, sort \\ nil) View Source
q(
  binary(),
  nil | integer(),
  nil | integer(),
  nil | binary() | [binary()],
  nil | binary() | [binary()],
  nil | binary()
) :: {:ok, HTTPoison.Response.t()} | {:error, Hui.Error.t()}

Convenience function for issuing various typical queries to the default Solr endpoint.

Example

  Hui.q("scott")
  # keywords
  Hui.q("loch", 10, 20)
  # .. with paging parameters
  Hui.q("\"apache documentation\"~5", 1, 0, "stream_content_type_str:text/html", ["subject"])
  # .. plus filter(s) and facet fields

Issue a keyword list or structured query to a specified Solr endpoint, raise an exception in case of failure.

See search/2.

Link to this function search!(url, query, facet) View Source
search!(url(), Hui.Q.t(), Hui.F.t()) :: HTTPoison.Response.t()
This function is deprecated. Use search!/2 instead, supply a list of structs as parameter.

Issue a standard structured query with faceting request to a specified Solr endpoint, raise an exception in case of failure.

Link to this function search!(url, keywords, rows \\ nil, start \\ nil, filters \\ nil, facet_fields \\ nil, sort \\ nil) View Source
search!(
  url(),
  binary(),
  nil | integer(),
  nil | integer(),
  nil | binary() | [binary()],
  nil | binary() | [binary()],
  nil | binary()
) :: HTTPoison.Response.t()

Convenience function for issuing various typical queries to a specified Solr endpoint, raise an exception in case of failure.

See q/6.

Issue a keyword list or structured query to a specified Solr endpoint.

Example - parameters

  # structured query with permitted or qualified Solr parameters
  url = "http://localhost:8983/solr/collection"
  Hui.search(url, %Hui.Q{q: "loch", rows: 5, wt: "xml", fq: ["type:illustration", "format:image/jpeg"]})
  # a keyword list of arbitrary parameters
  Hui.search(url, q: "edinburgh", rows: 10)

  # supply a list of Hui structs for more complex query e.g. DisMax
  x = %Hui.D{q: "run", qf: "description^2.3 title", mm: "2<-25% 9<-3", pf: "title", ps: 1, qs: 3}
  y = %Hui.Q{rows: 10, start: 10, fq: ["edited:true"]}
  z = %Hui.F{field: ["cat", "author_str"], mincount: 1}
  Hui.search(url, [x, y, z])

  # SolrCloud query
  x = %Hui.Q{q: "john", collection: "library,commons", rows: 10, distrib: true, "shards.tolerant": true, "shards.info": true}
  Hui.search(url, x)

  # Add results highlighting (snippets) with `Hui.H`
  x = %Hui.Q{q: "features:photo", rows: 5}
  y = %Hui.H{fl: "features", usePhraseHighlighter: true, fragsize: 250, snippets: 3 }
  Hui.search(url, [x, y])

Example - URL endpoints

  url = "http://localhost:8983/solr/collection"
  Hui.search(url, q: "loch")

  url = :library
  Hui.search(url, q: "edinburgh", rows: 10)

  url = %Hui.URL{url: "http://localhost:8983/solr/collection", handler: "suggest"}
  Hui.search(url, suggest: true, "suggest.dictionary": "mySuggester", "suggest.q": "el")

See Hui.URL.configured_url/1 and Hui.URL.encode_query/1 for more details on Solr parameter keyword list.

Hui.URL.t/0 struct also enables HTTP headers and HTTPoison options to be specified in keyword lists. HTTPoison options provide further controls for a request, e.g. timeout, recv_timeout, max_redirect, params etc.

  # setting up a header and a 10s receiving connection timeout
  url = %Hui.URL{url: "..", headers: [{"accept", "application/json"}], options: [recv_timeout: 10000]}
  Hui.search(url, q: "solr rocks")

See HTTPoison.request/5 for more details on HTTPoison options.

Example - faceting

  x = %Hui.Q{q: "author:I*", rows: 5}
  y = %Hui.F{field: ["cat", "author_str"], mincount: 1}
  Hui.search(:library, [x, y])

  # more elaborated faceting query
  x = %Hui.Q{q: "*", rows: 5}
  range1 = %Hui.F.Range{range: "price", start: 0, end: 100, gap: 10, per_field: true}
  range2 = %Hui.F.Range{range: "popularity", start: 0, end: 5, gap: 1, per_field: true}
  y = %Hui.F{field: ["cat", "author_str"], mincount: 1, range: [range1, range2]}
  Hui.search(:default, [x, y])

The above Hui.search(:default, [x, y]) example issues a request that resulted in the following Solr response header showing the corresponding generated and encoded parameters.

"responseHeader" => %{
  "QTime" => 106,
  "params" => %{
    "f.popularity.facet.range.end" => "5",
    "f.popularity.facet.range.gap" => "1",
    "f.popularity.facet.range.start" => "0",
    "f.price.facet.range.end" => "100",
    "f.price.facet.range.gap" => "10",
    "f.price.facet.range.start" => "0",
    "facet" => "true",
    "facet.field" => ["cat", "author_str"],
    "facet.mincount" => "1",
    "facet.range" => ["price", "popularity"],
    "q" => "*",
    "rows" => "5"
  },
  "status" => 0,
  "zkConnected" => true
}
Link to this function search(url, query, facet) View Source
search(url(), Hui.Q.t(), Hui.F.t()) ::
  {:ok, HTTPoison.Response.t()} | {:error, Hui.Error.t()}
This function is deprecated. Use search/2 instead, supply a list of structs as parameter.

Issue a standard structured query with faceting request to a specified Solr endpoint.

Link to this function search(url, keywords, rows \\ nil, start \\ nil, filters \\ nil, facet_fields \\ nil, sort \\ nil) View Source
search(
  url(),
  binary(),
  nil | integer(),
  nil | integer(),
  nil | binary() | [binary()],
  nil | binary() | [binary()],
  nil | binary()
) :: {:ok, HTTPoison.Response.t()} | {:error, Hui.Error.t()}

Convenience function for issuing various typical queries to a specified Solr endpoint.

See q/6.

Link to this function spellcheck!(url, spellcheck_query_struct) View Source
spellcheck!(url(), Hui.Sp.t()) :: HTTPoison.Response.t()

Issue a spell checking query to a specified Solr endpoint, raise an exception in case of failure.

Link to this function spellcheck!(url, spellcheck_query_struct, query_struct) View Source
spellcheck!(url(), Hui.Sp.t(), Hui.Q.t()) :: HTTPoison.Response.t()

Issue a spell checking query to a specified Solr endpoint, raise an exception in case of failure.

Link to this function spellcheck(url, spellcheck_query_struct) View Source
spellcheck(url(), Hui.Sp.t()) ::
  {:ok, HTTPoison.Response.t()} | {:error, Hui.Error.t()}

Issue a spell checking query to a specified Solr endpoint.

Example

  spellcheck_query = %Hui.Sp{q: "delll ultra sharp", count: 10, "collateParam.q.op": "AND", dictionary: "default"}
  Hui.spellcheck(:library, spellcheck_query)
Link to this function spellcheck(url, spellcheck_query_struct, query_struct) View Source
spellcheck(url(), Hui.Sp.t(), Hui.Q.t()) ::
  {:ok, HTTPoison.Response.t()} | {:error, Hui.Error.t()}

Issue a spell checking query to a specified Solr endpoint.

Link to this function suggest!(url, suggest_query_struct) View Source
suggest!(url(), Hui.S.t()) :: HTTPoison.Response.t()

Issue a structured suggester query to a specified Solr endpoint, raise an exception in case of failure.

Link to this function suggest!(url, q, count \\ nil, dictionaries \\ nil, context \\ nil) View Source
suggest!(
  url(),
  binary(),
  nil | integer(),
  nil | binary() | [binary()],
  nil | binary()
) :: HTTPoison.Response.t()

Convenience function for issuing a suggester query to a specified Solr endpoint, raise an exception in case of failure.

Link to this function suggest(url, suggest_query_struct) View Source
suggest(url(), Hui.S.t()) ::
  {:ok, HTTPoison.Response.t()} | {:error, Hui.Error.t()}

Issue a structured suggester query to a specified Solr endpoint.

Example

  suggest_query = %Hui.S{q: "ha", count: 10, dictionary: "name_infix"}
  Hui.suggest(:library, suggest_query)
Link to this function suggest(url, q, count \\ nil, dictionaries \\ nil, context \\ nil) View Source
suggest(
  url(),
  binary(),
  nil | integer(),
  nil | binary() | [binary()],
  nil | binary()
) :: {:ok, HTTPoison.Response.t()} | {:error, Hui.Error.t()}

Convenience function for issuing a suggester query to a specified Solr endpoint.

Example

  Hui.suggest(:autocomplete, "t")
  Hui.suggest(:autocomplete, "bo", 5, ["name_infix", "ln_prefix", "fn_prefix"], "1939")