Upload
roshan-bhattarai
View
1.214
Download
0
Tags:
Embed Size (px)
DESCRIPTION
This presentation provide the details of what is the problem with WordPress Search and how Full-Text search on WordPress can be used using Sphinx
Citation preview
EnhanceWordPress
Search using Sphinx
I’m Roshan Bhattarai
• CTO @ Proshore• Co-author – PHP AJAX COOKBOOK• A Developer and learner• Sometime I blog @ http://roshanbh.com.np• Twitter/Facebook/Linkedin @roshanbh
What’s the problem with search in
WordPress
Problem with default WordPress Search
• Default WordPress uses SQL like operator and % wildcard character to get search result
• SQL’s Like operator doesn’t care much about the relevancy of the result
• Like operation is too slow in large set of textual data
• WordPress sort the search result by date
Ok let’s improve the WordPress Search
So what’s resolution ?
• Use the MySQL Full-Text indexing and Search.
• Use Full-Text search server
MySQL Full-Text search
• http://wordpress.org/plugins/wp-cjk-fulltext-index/
• It improve the searching speed and result relevancy by using MATCH AGAINST than LIKE function
• Use Full-Text index
http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html
Full-Text Search SQL Example
Normal Like Search :
WHERE (post_title LIKE '%morbi%') OR (post_content LIKE '%morbi%')
Full-Text MySQL Search :
WHERE MATCH (post_title,post_content) AGAINST (’morbi');
Pros and Cons MySQL Full-Text Indexing
• Pros• Can be used in Shared hosting • No need to install extra search server
• Cons• Still slow with very large data• Not featured rich like Search server
And a very good news
• Please upgrade your WordPress now. Relevancy is added in the search of WordPress 3.7
• Official Note from WordPress 3.7 release :
Search results are now ordered by how well the search query matches a post, instead of ordered only by date. For example, when your search terms match a post title, that result will be pushed to the top.
WordPress 3.7 has better search
Difference in Search SQL
• Wordpress 3.6
WHERE ((wp_posts.post_title LIKE '%morbi%') OR (wp_posts.post_content LIKE '%morbi%'))ORDER BY wp_posts.post_date DESC
• WordPress 3.7
WHERE ((wp_posts.post_title LIKE '%morbi%') OR (wp_posts.post_content LIKE '%morbi%'))ORDER BY wp_posts.post_title LIKE '%morbi%' DESC, wp_posts.post_date DESC
Still, It uses like operator
of SQL
Why full text search engine
• Provides more relevant result.• Uses a ranking algorithm to quantify how
strongly a given record matches search keywords.
• Fast indexing • Search is fast compared to default MySQL
search and MyQL Full text indexing• Allow to use special operators like OR or
NOT in search
Popular Full text search engines
• Apache Solr ( http://lucene.apache.org/solr/ )
• Elastic Search ( http://www.elasticsearch.org/ )
• Sphinx ( http://sphinxsearch.com/ )
Why Sphinx ?
• Easy to setup and use
• Good documentation
• Used by many big websites like Craiglist, Groupon, Metacafe etc
• My personal choice
Server Requirement
• Must have server with SSH access
• VPS or Dedicated server is recommended
Installation of Sphinx
For Mac ( using Homebrew)
brew install sphinx –-mysql
For Windows / Ubuntu / Debian / RHEL/CentOS
http://sphinxsearch.com/downloads/release/
WordPress Plugin
WordPress Sphinx Search Plugin
http://wordpress.org/plugins/wordpress-sphinx-plugin/
Two main componentsWhen installed sphinx, two application called indexer and searchd gets installed.
• Indexer This component of Sphinx is used for indexing the data.
• Searchd This is a search daemon which returns of the document id of matched search results.
Installation
Now setup Cron Job
Note : Delta index is a small temporary index above main index.
The boring installaion is done ! YaY
To run indexer and searchd Manually
• To run indexer manually/usr/local/sphinx/bin/indexer --rotate –config /<path of wordpress>/wp-content/uploads/sphinx/sphinx.conf wp_delta wp_main wp_stats
• To run searchd manually /usr/local/sphinx/bin/searchd --config /<pat of wordpress>/wp-content/uploads/sphinx/sphinx.conf
Now let’s look at the result of all the hard
work
Normal WordPress search result
Search result after using Sphinx
Doh! This guy is done with his boring talk
Listening to next person is always boring. To make it exciting you’ve to do it yourself
Thank you!
Any Questions ?