Enhance WordPress Search Using Sphinx

Post on 15-Jan-2015

1,206 views 0 download

Tags:

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

transcript

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 ?