Save 37% off PRO during our Black Friday Sale! »

Finding your High with Low Search

Finding your High with Low Search

An introduction to Low Search for ExpressionEngine, given at EEconf 2016.

A347386377e120e3230403d2558c1a0d?s=128

Lodewijk Schutte

October 04, 2016
Tweet

Transcript

  1. Finding your high with Low Search By Lodewijk Schutte ~

    Low, October 2016
  2. Hi! I'm Low!

  3. Low Search

  4. Google searches pages, returns URLs. Low Search filters & returns

    Channel Entries.
  5. The more granular the content, the more control you have

    over its output.
  6. Searching vs. Filtering •In ExpressionEngine, searching == filtering. •Filter output

    by setting parameters to the Channel Entries Tag. •Low Search extends the CE Tag, offering more parameters and thus more control.
  7. {exp:channel:entries dynamic="no"} code {/exp:channel:entries}

  8. {exp:channel:entries dynamic="no" status="open" show_future_entries="no" show_expired="no" orderby="date" sort="desc" limit="100" }

  9. {exp:channel:entries dynamic="no" channel="articles" category="5" username="stanlee" search:body="marvel" start_on="-3 months" status="open" show_future_entries="no"

    show_expired="no" orderby="date" sort="desc" limit="100" }
  10. {exp:low_search:results} Read parameters, run filters Set fixed_order or entry_id parameter

    Call {exp:channel:entries} Post-process returned entries Return search results
  11. {exp:low_search:results collection="products" keywords="luke cage" category:type="7|8" category:gender="11" search:size="=XL|XXL" range-to:price="30" orderby_sort="price|asc" }

    All mens tees and hoodies in size XL or XXL, up to $30, that match the terms "luke cage", ordered by price, ascending.
  12. {exp:channel:entries channel="products" entry_id="34|38|42|51" orderby="price" sort="asc" }

  13. {exp:channel:entries channel="products" entry_id="34|38|42|51" orderby="price" sort="asc" status="open" show_future_entries="no" show_expired="no" limit="100" }

  14. A parameter… •…can be fixed:
 {exp:low_search:results name="value"} •…can be dynamic,

    using a form:
 <input name="name" value="value"> •…can be read as a variable:
 {low_search_name} => value
  15. {exp:low_search:form result_page="search/results"} <input name="keywords" value=""> <select name="category:type[]" multiple>…</select <input name="search:size[]"

    type="checkbox" value="XL"> XL … <input name="range-to:price" type="range" min="10" max="250" step="10"> <select name="limit">…</select> other form fields {/exp:low_search:form}
  16. domain.com/search/results/eyJyZXN…

  17. {exp:low_search:results collection="products" query="{segment_3}" } {if count == 1} Searched for

    {low_search_keywords} {/if} code {/exp:low_search:results}
  18. A filter… •…consists of any amount of parameters. •…runs one

    or more (simple) queries. •…passes its results onto the next. •…triggers no_results when it comes up empty.
  19. Keywords •Matches entries against given keywords •Uses a full-text index

    created via collections •Allows for speed and relevance •Allows for inflections and stemming •Order by relevance score
  20. Field Search •Like native search:field_name parameter •Can target title, url_title

    and status •Can target Grid (or Matrix) columns •Additional matching, like starts_with •Smart Field Search option
  21. Ranges •Targets numeric or date fields •Two values, one field;

    optionally specify min/max values separately •Can also target Grid (or Matrix) columns •Inverse ranges (two fields, one value)
  22. Categories •Accepts category_ids •Combine AND and OR by specifying groups

    on the fly: •category:color="1|2|3" •category:type="4|5|6" •category:style="7|8|9"
  23. Relationships •Accepts entry_ids or url_titles •Can target the parent or

    child entry: •parent:field_name="1|2|3" •child:field_name="4|5|6"
  24. Distance •Uses Haversine algorithm •From given lat/lon values to one

    or two fields containing the entry’s coordinates •Specify max radius and unit •Order by calculated distance
  25. There’s more! •Tags (included) •Members https://github.com/low/low_search_members •Table https://github.com/low/low_search_table •Calendar (sold

    separately, EE2) •Store (sold separately, EE2) •Create your own…
  26. class Low_search_filter_foo extends Low_search_filter { public function filter($entry_ids) { return

    $entry_ids; } public function fixed_order() { return FALSE; } public function results($rows) { return $rows; } }
  27. Questions?

  28. Thank You! gotolow.com @low