Home > Article > Backend Development > How to use sphinx search engine in php
Sphinx is an efficient search engine. The word segmentation search speed is relatively fast. The index is created and stored in the hard disk file. It will not interfere with the database. It has its own set of built-in databases. I hope it can help everyone.
sphinx is an efficient search engine. The word segmentation search speed is relatively fast. The index is established and stored in the hard disk file. It will not interfere with the database and has its own A set of built-in databases
If aptitude is not installed, you need to install aptitude first because problems will occur when using apt get install to install the following command.<br> sudo apt-get install aptitude
<br>sudo aptitude install sphinx3 sphinx3-doc sphinxsearch sphinx-common -y
<br> 1 2 |
<br> cd /etc/sphinxsearch/ cp sphinx.conf. sample sphinx.conf |
Modify the configuration file as follows<br>
123 4567891011 121314151617181920212223242526272829303132 33343536373839404142434445464748495051 |
source src1{type = mysqlsql_host = localhostsql_user = rootsql_pass = magicmomasql_db = coupon_20160901 sql_port = 3306 # optional, default is 3306sql_query = SELECT couponid,title,description FROM app_coupon_api # Need to include primary key, word segmentation index field ##} index test1 { source = src1 path = /var/lib/sphinxsearch/ data/test1 #Index storage directory docinfo = extern mlock = 0 morphology = none min_word_len = 1 charset_type = utf-8 min_prefix_len = 0 min_infix_len = 0 ngram_len = 1 html_strip = 0 } indexer { mem_limit = 2048M }<br> searchd { listen = 9312 listen = 9306:mysql41 log = /var/log/sphinxsearch/searchd.log query_log = /var/log /sphinxsearch/query.log read_timeout = 5 client_timeout = 300 max_children = 30 pid_file = /var/run/sphinxsearch/searchd. pid max_matches = 1000 seamless_rotate = 1 preopen_indexes = 1 unlink_old = 1 mva_updates_pool = 1M max_packet_size = 8M max_filters = 256 max_filter_values = 4096 max_batch_queries = 32 workers = threads # for RT to work | }
<br>
Execute the word segmentation command and a bunch of index files will be generated in the /var/lib/sphinxsearch/data/test1 directory<br>sudo indexer - c /etc/sphinxsearch/sphinx.conf test1
test1 is the index name of the above configuration file
sudo search -c /etc/sphinxsearch/sphinx.conf google
apt-get install aptitude
<br>sudo aptitude install libsphinxclient-dev libsphinxclient-0.0.1 -y
Install pecl<br>sudo apt-get install php-pear php5-dev
<br>Install sphinx<br>sudo pecl install sphinx
My php.ini file is <br> sudo vim /etc/php5/fpm/php.ini
<br>Get your own php.ini file location using<br>php5-fpm -i|grep ini
Add:<br>extension=sphinx.so
<br>4. Restart php5-fpm and check whether php loads the sphinx module<br>sudo /etc/init.d/php5 -fpm restart
<br>5. Run the search program in the background<br>sudo searchd -c /etc/sphinxsearch/sphinx.conf
<br>Default listening port in the configuration file: 9312
6. Call search in thinkphp<br>
123 45678910111213 | public function testSphinx(){$s = new \SphinxClient;$s->setServer("localhost", 9312);$s->SetArrayResult (true ); $s->setMatchMode(SPH_MATCH_ANY);$s->setMaxQueryTime(3);$result = $s->query("test"); $result = $result['matches'];$result = array_column($result,'id');$list = M('CouponApi')-> ;field('couponid,title,description')->where(array('couponid'=>array('in',$result)))->select();dump( $list);} |
$ s->SetLimits(0, 1000, 1000);), the search speed is quite fast, and it takes less than 10 seconds to index the title and description fields of 800,000 pieces of data. The search engine supports incremental indexing and a variety of For pattern search, there is a lot of information on the Internet
The above is the detailed content of How to use sphinx search engine in php. For more information, please follow other related articles on the PHP Chinese website!