Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Finding your High with Low Search
Search
Lodewijk Schutte
October 04, 2016
Programming
380
0
Share
Finding your High with Low Search
An introduction to Low Search for ExpressionEngine, given at EEconf 2016.
Lodewijk Schutte
October 04, 2016
More Decks by Lodewijk Schutte
See All by Lodewijk Schutte
Errare Humanum Est
low
2
470
So, you wanna build an add-on...
low
1
95
Parse Order Pro
low
2
670
PHP in Templates: Pain or Pleasure
low
0
200
Ajax and ExpressionEngine
low
1
120
Other Decks in Programming
See All in Programming
レガシーPHP転生 〜父がドメインエキスパートだったのでDDD+Claude Codeでチート開発します〜
panda_program
0
890
AWS re:Invent 2025の少し振り返り + DevOps AgentとBacklogを連携させてみた
satoshi256kbyte
3
160
ふりがな Deep Dive try! Swift Tokyo 2026
watura
0
210
3分でわかるatama plusのQA/about atama plus QA
atamaplus
0
160
Kubernetes上でAgentを動かすための最新動向と押さえるべき概念まとめ
sotamaki0421
3
490
実践CRDT
tamadeveloper
0
550
tRPCの概要と少しだけパフォーマンス
misoton665
2
170
「速くなった気がする」をデータで疑う
senleaf24
0
170
10年分の技術的負債、完済へ ― Claude Code主導のAI駆動開発でスポーツブルを丸ごとリプレイスした話
takuya_houshima
0
2.5k
Mastering Event Sourcing: Your Parents Holidayed in Yugoslavia
super_marek
0
150
RSAが破られる前に知っておきたい 耐量子計算機暗号(PQC)入門 / Intro to PQC: Preparing for the Post-RSA Era
mackey0225
3
130
煩雑なSkills管理をSoC(関心の分離)により解決する――関心を分離し、プロンプトを部品として育てるためのOSSを作った話 / Solving Complex Skills Management Through SoC (Separation of Concerns)
nrslib
4
890
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.2k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
The SEO identity crisis: Don't let AI make you average
varn
0
440
Designing Powerful Visuals for Engaging Learning
tmiket
1
340
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
710
How to build a perfect <img>
jonoalderson
1
5.4k
Being A Developer After 40
akosma
91
590k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.4k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
180
Transcript
Finding your high with Low Search By Lodewijk Schutte ~
Low, October 2016
Hi! I'm Low!
Low Search
Google searches pages, returns URLs. Low Search filters & returns
Channel Entries.
The more granular the content, the more control you have
over its output.
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.
{exp:channel:entries dynamic="no"} code {/exp:channel:entries}
{exp:channel:entries dynamic="no" status="open" show_future_entries="no" show_expired="no" orderby="date" sort="desc" limit="100" }
{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" }
{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
{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.
{exp:channel:entries channel="products" entry_id="34|38|42|51" orderby="price" sort="asc" }
{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" }
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
{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}
domain.com/search/results/eyJyZXN…
{exp:low_search:results collection="products" query="{segment_3}" } {if count == 1} Searched for
{low_search_keywords} {/if} code {/exp:low_search:results}
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.
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
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
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)
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"
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"
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
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…
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; } }
Questions?
Thank You! gotolow.com @low