1 Install php,mysql before installing
php5.5.29 installation: http://blog.csdn.net/clevercode/article/details/52198698.
mysql-5.5.27:http://blog.csdn.net/clevercode/article/details/45499231.
2 Downloads
2.1 This installation of the resource bundle, configuration files, test files
http://download.csdn.net/detail/clevercode/9602949.
2.2 Other
sphinx:http://sphinxsearch.com/downloads/release/
Sphinx PHP Extension: Http://pecl.php.net/package/sphinx
scws:http://www.xunsearch.com/scws/download.php
SCWS Thesaurus: http://www.xunsearch.com/scws/down/scws-dict-chs-utf8.tar.bz2
3 Other References
"Sphinx Scws Full-Text Search installation configuration detailed": Http://blog.51yip.com/mysql/1659.html.
"PHP based on SPHINX+SWCS Chinese word segmentation of the full text search": http://www.bubuko.com/infodetail-1024880.html.
Sphinx Inverted Table Introduction ("SPH", "Spa", "SPI", "SPD", "SPP", "SPM"): http://blog.csdn.net/todaylxp/article/details/4269223.
"Sphinx configuration File Full resolution": http://www.cnblogs.com/yjf512/p/3598332.html.
4 Installation
4.1 Installing Sphinx
# mkdir-p/usr/local/src/sphinx# Cd/usr/local/src/sphinx # tar zxvf sphinx-2.2.5-release.tar.gz # CD Sphinx-2.2.5-r Elease #/configure--prefix=/usr/local/sphinx2--with-mysql=/usr/local/mysql
4.2 Installing the Sphinx Client
# cd/usr/local/src/sphinx/sphinx-2.2.5-release/api/libsphinxclient //sphinx-2.2.5-release Directory #./ Configure--prefix=/usr/local/sphinx2/libsphinxclient # make && make install
4.3 Installing Sphinx PHP Extensions
(Phpize in/usr/local/php5/bin/phpize, if there is no phpize command, ln-s to/usr/bin)
# cd/usr/local/src/sphinx# Tar zxvf sphinx-1.3.1.tgz # cd sphinx-1.3.1 # phpize
4.4 Installing SCWS
# cd/usr/local/src/sphinx# tar xvjf scws-1.2.3.tar.bz2# mkdir/usr/local/scws # cd scws-1.2.3 #./configure--PR efix=/usr/local/scws/
4.5 Installing SCWS PHP Extensions
# cd/usr/local/src/sphinx/scws-1.2.3/phpext # Phpize
4.6 Installing the SCWS thesaurus
# tar xvjf scws-dict-chs-utf8.tar.bz2-c/usr/local/scws/etc/# www for php-fpm run user # Chown www:www/usr/local/scws/etc/ Dict.utf8.xdb
5 Creating a MySQL data source
5.1 Test.sql
/*navicat MySQL Data transfersource server:192.168.101.130source Server version:50527source host:1 92.168.101.130:3306source database:testtarget Server type:mysqltarget server Version:50527file Encoding : 65001date:2016-08-14 13:46:48*/set foreign_key_checks=0;--------------------------------Table structure for "use Rinfo '------------------------------DROP TABLE IF EXISTS ' userinfo '; CREATE TABLE ' userinfo ' (' id ' int (one) unsigned not null auto_increment, ' userid ' int (one) unsigned not null DEFAULT ' 0 ', ' Addtime ' datetime NOT NULL, ' post ' varchar (no null DEFAULT ' ', ' summary ' text NOT NULL, PRIMARY KEY (' id ')) ENG Ine=innodb auto_increment=21 DEFAULT Charset=utf8;--------------------------------Records of userinfo-------------- ----------------insert INTO ' userinfo ' values (' 17 ', ' 1 ', ' 2012-06-01 00:24:54 ', ' Hung ', ' Olympic '); insert INTO ' userinfo ' values (' 18 ', ' 2 ', ' 2014-08-19 10:24:54 ', ' Chinese ', ' primitive '); INSERT into ' userinfo ' VALUES (' 19 ', ' 3 ', ' 2015-08-01 12:24:54 ', ' primitive ', ' nimne '); INSERT into ' userinfo ' VALUES (' 20 ', ' 4 ', ' 2013-08-01 00:24:54 ', ' The force of the primitive ', ' 23 gold ');--------------------------------table structure for ' users '------------------------------DROP table IF EXISTS ' Users '; CREATE TABLE ' users ' (' id ' int (one) unsigned not null auto_increment, ' username ' varchar "not null DEFAULT ', PRIMA RY KEY (' id ')) engine=innodb auto_increment=5 DEFAULT Charset=utf8;--------------------------------Records of users--- ---------------------------insert INTO ' users ' values (' 1 ', ' Zhangsan '); insert into ' users ' values (' 2 ', ' Zhangsi '); I Nsert into ' users ' values (' 3 ', ' John Doe '); INSERT into ' users ' values (' 4 ', ' Harry ');
5.2 Executing the source Test.sql
5.3 Data sources
6 Configuring Sphinx
The following 3 configurations of Searchd are important. Mysql-h 127.0.0.1-p 9306 access. 9312 can be accessed for PHP. Query_log_format Record The format of the log.
1 # PHP
Listen = 9312
2 # MySQL
Listen = 9306:mysql41
3 # Log_format
Query_log_format = SPHINXQL
# Vim /usr/local/sphinx2/etc/ sphinx.conf
SOURCE users{type= mysqlsql_host= 127.0.0.1sql_user= rootsql_pass= 123456sql_db= testsql_port= 3306# Optional, default is 3306sql_query_pre = set NAMES UTF8 sql_query_pre = set SESSION Query_cache_type=off sql_query = SELECT a.ID, A.userid,b.username, Unix_timestamp (a.addtime) as Addtime, A.post, a.summary from UserInfo a left join users B on a . UserID = b.id Sql_attr_uint = UserID Sql_field_string = Username Sql_field_string = Post Sql_attr_timestamp = Addtime Sql_ranged_throttle = 0 #sql_attr_uint = group_id#sql_attr_timestamp= date_added#sql_ranged_throttle= 0}source src1throttled:users {sql_ranged_throttle= 100}index users {Source = users path =/usr/local/sphinx2/var/data/users doc info = extern Mlock = 0 morphology = None Min_word_len = 1 Html_strip = 1 charset_table = u+ff10. u+ff19->0..9, 0..9, u+ff41. U+ff5a->a. Z, U+FF21. U+ff3a->a. Z,a. Z->a. Z, A.. Z, u+0149, u+017f, u+0138, U+00DF, U+00FF, u+00c0. U+00d6->u+00e0. U+00f6,u+00e0. u+00F6, U+00d8. U+00de->u+00f8. U+00fe, U+00f8. U+00fe, u+0100->u+0101, u+0101,u+0102->u+0103, u+0103, u+0104->u+0105, u+0105, U+0106->U+0107, U+0107, U+ 0108->u+0109,u+0109, u+010a->u+010b, u+010b, u+010c->u+010d, u+010d, u+010e->u+010f, U+010F,U+0110->U +0111, u+0111, u+0112->u+0113, u+0113, u+0114->u+0115, u+0115, u+0116->u+0117,u+0117, U+0118->U+0119, U+ 0119, u+011a->u+011b, u+011b, u+011c->u+011d, u+011d,u+011e->u+011f, u+011f, u+0130->u+0131, U+0131, U+ 0132->u+0133, u+0133, u+0134->u+0135,u+0135, u+0136->u+0137, u+0137, u+0139->u+013a, U+013A, U+013B->U +013c, u+013c,u+013d->u+013e, u+013e, u+013f->u+0140, u+0140, u+0141->u+0142, U+0142, U+0143->U+0144,U+ 0144, u+0145->u+0146, u+0146, u+0147->u+0148, u+0148, u+014a->u+014b, u+014b,u+014c->u+014d, U+014D, U+ 014e->u+014f, u+014f, u+0150->u+0151, u+0151, u+0152->u+0153,u+0153, u+0154->u+0155, U+0155, U+0156->U +0157, u+0157, U+0158-> u+0159, u+0159,u+015a->u+015b, u+015b, u+015c->u+015d, u+015d, u+015e->u+015f, U+015F, U+0160->U+0161,U+ 0161, u+0162->u+0163, u+0163, u+0164->u+0165, u+0165, u+0166->u+0167, u+0167,u+0168->u+0169, U+0169, U+ 016a->u+016b, u+016b, u+016c->u+016d, u+016d, u+016e->u+016f,u+016f, u+0170->u+0171, U+0171, U+0172->U +0173, u+0173, u+0174->u+0175, u+0175,u+0176->u+0177, u+0177, u+0178->u+00ff, u+00ff, U+0179->U+017A, U+ 017A, u+017b->u+017c,u+017c, u+017d->u+017e, u+017e, u+0410..u+042f->u+0430..u+044f, U+0430..U+044F,U+05D0 .. U+05ea, u+0531..u+0556->u+0561..u+0586, u+0561..u+0587, u+0621..u+063a, U+01B9,U+01BF, U+0640..U+064A, U+0660..U+ 0669, u+066e, u+066f, U+0671..u+06d3, u+06f0. u+06ff,u+0904..u+0939, u+0958..u+095f, u+0960..u+0963, u+0966..u+096f, u+097b. U+097F,U+0985..U+09B9, U+09ce, U+09DC. U+09e3, U+09e6. U+09ef, U+0a05. U+0a39, U+0a59. U+0a5e,u+0a66. u+0a6f, U+0a85. U+0AB9, U+0ae0. U+0ae3, U+0ae6. U+0AEF, U+0b05. u+0b39,u+0b5C.. U+0b61, u+0b66. u+0b6f, U+0b71, u+0b85. U+0BB9, U+0be6. U+0BF2, U+0C05. U+0c39,u+0c66. u+0c6f, u+0c85. U+0CB9, U+0CDE. U+0ce3, U+0ce6. U+0CEF, u+0d05. U+0d39, U+0d60,u+0d61, U+0d66. u+0d6f, u+0d85. U+0DC6, u+1900..u+1938, u+1946..u+194f, u+a800. u+a805,u+a807. u+a822, U+0386->U+03B1, u+03ac->u+03b1, U+0388->u+03b5, U+03ad->u+03b5,u+0389->u+03b7, U+03AE->U+ 03b7, U+038A->U+03B9, U+0390->U+03B9, U+03AA->U+03B9,U+03AF->U+03B9, U+03CA->U+03B9, U+038C->U+ 03BF, U+03CC->U+03BF, U+038e->u+03c5,u+03ab->u+03c5, U+03b0->u+03c5, U+03CB->U+03C5, U+03CD->U+ 03C5, U+038F->U+03C9,U+03CE->U+03C9, U+03C2->U+03C3, u+0391..u+03a1->u+03b1. U+03c1,u+03a3. U+03a9->u+03c3. U+03C9, u+03b1. U+03C1, U+03C3. U+03C9, U+0e01. U+0e2e,u+0e30. U+0E3A, U+0e40. U+0e45, U+0e47, U+0e50. U+0e59, u+a000. u+a48f, u+4e00. U+9FBF,U+3400..U+4DBF, U+20000..U+2A6DF, u+f900. U+faff, u+2f800. U+2FA1F, U+2e80. U+2eff,u+2f00. U+2FDF, u+3100..u+312f, u+31a0. U+31bf, u+3040..u+309f, u+30a0. U+30ff,u+31f0. U+31FF, u+ac00. U+D7AF, u+1100..u+11ff, u+3130..u+318f, u+a000. u+a48f,u+a490. U+A4CF Ngram_len = 1 Ngram_chars = u+4e00. U+9FBF, U+3400..U+4DBF, U+20000..U+2A6DF, u+f900. u+faff,u+2f800. U+2FA1F, U+2e80. U+2eff, u+2f00. U+2FDF, u+3100..u+312f, u+31a0. u+31bf,u+3040..u+309f, u+30a0. U+30ff,u+31f0. U+31FF, u+ac00. U+D7AF, u+1100..u+11ff,u+3130..u+318f, u+a000. u+a48f, u+a490. U+A4CF}common{}indexer{mem_limit= 128m}searchd{#phplisten = 9312#mysql Listen = 9306:mysql41log=/u sr/local/sphinx2/var/log/searchd.logquery_log=/usr/local/sphinx2/var/log/query.logquery_log_format = sphinxqlread_timeout= 5client_timeout= 300max_children= 30persistent_connections_limit= 30pid_file=/usr/local/ sphinx2/var/log/searchd.pidseamless_rotate= 1preopen_indexes= 1unlink_old= 1mva_updates_pool= 1Mmax_packet_size= 8mmax_filters= 256max_filter_values= 4096max_batch_queries= 32workers= Threads # for RT to work}
7 Configuring PHP.ini
# Vim/etc/php.ini Add
[sphinx]extension = sphinx.so[scws]extension = Scws.soscws.default.charset = Utf-8scws.default.fpath =/usr/local/scws /etc
8 Start sphinx,php-fpm8.1, start Sphinx
# pkill searchd#/usr/local/sphinx2/bin/indexer--config/usr/local/sphinx2/etc/sphinx.conf--all #/usr/local/ Sphinx2/bin/searchd--config/usr/local/sphinx2/etc/sphinx.conf
# if the error libmysqlclient.so.18.
# ln-s/usr/local/mysql/lib/libmysqlclient.so.18/usr/lib/libmysqlclient.so.18 #32机器
# ln-s/usr/local/mysql/lib/libmysqlclient.so.18/usr/lib64/libmysqlclient.so.18 #64位机器
8.2, restart PHP-FPM (if the Web calls PHP)
Restart PHP-FPM
9 Test Sphinx Full Text Search9.1 Client Testing
9.2 PHP Test
test.php
<?php header ("content-type:text/html; Charset=utf-8 "); $b _time = Microtime (true); $key = "The force of the primitive"; $index = "Users"; ======================================== participle $so = scws_new (); $so->set_charset (' utf-8 '); The default thesaurus $so->add_dict (ini_get (' Scws.default.fpath '). '/dict.utf8.xdb '); Custom Thesaurus//$so->add_dict ('./dd.txt ', scws_xdict_txt); The default rule $so->set_rule (Ini_get (' Scws.default.fpath '). '/rules.utf8.ini '); Sets whether to remove some special punctuation marks when the word breaker returns the result $so->set_ignore (true); Set whether the word breaker returns the result of a duplex split, such as "Chinese" return "Chinese + people + Chinese" three words. Bitwise XOR 1 | 2 | 4 | 8 distinction: Short Words | binary | Main Word | All word//1,2,4,8 correspond to constants Scws_multi_short scws_multi_duality scws_multi_zmain Scws_multi_zall $so->set_multi (false); Set whether the idle text is automatically aggregated by Word segmentation $so->set_duality (FALSE); Set search terms $so->send_text ($key); $words _array = $so->get_result (); $words = ""; foreach ($words _array as $v) {$words = $words. ' | ('. $v [' word ']. ') '; }//Join Whole Word # $words = ' ('. $key. ') '. $words; $words = Trim ($words, ' | '); $so->close (); Echo ' <p> input: '. $key. ' </p> '. ' \ r \ n"; Echo ' <p> participle: '. $words. ' </p> '. ' \ r \ n ";//======================================== search $SC = new sphinxclient (); $SC->setserver (' 127.0.0.1 ', 9312); # $SC->setmatchmode (Sph_match_all); $SC->setmatchmode (sph_match_extended); $SC->setarrayresult (TRUE); $res = $sc->query ($words, $index); Print_r ($res); $e _time = Microtime (true); $time = $e _time-$b _time; Exit;? >
3) Printing Results
From the words results, you can see the number of articles hit after a dollar participle.
<p> input: The force of the Primitive </p><p> participle: (primitive) | (The) | (force) </p>array ([ERROR] = [WARNING] = [status] = 0 [Fields] = = Array ( [0] = = Username [1] = post [2] = summary) [Attrs] = = Array ( [UserID] = 1 [Username] = 7 [Addtime] = 2 [post] + 7) [Mat Ches] = Array ([0] = = Array ([id] = 20 [Weight] = 4500 [attrs] = = Array ([userid] = > 4 [Username] = Harry [Addtime] = 1375345494 [post] = The force of the Primitive)) [1] = = Array ( [ID] [Weight] = 3451 [attrs] = = Array ([UserID] = 3 [Username] = John Doe [Addtime] = 1438460694 [post] = the primitive )) [2] = = Array ([id] = [weight ] = 2436 [Attrs] = Array ([userid] = 2 [Username] = Zhangsi [Addtime] = 1408472694 [post] = Chinese)) [Total] = 3 [Total_found] + 3 [TIME] = 0 [words] = = Array ([flood] = = Array ([docs] =& Gt 4 [hits] + 4) [Araki] = Array ([docs] = 3 [hits] + 3) [the] = = Array ([docs] = 2 [hits] = 2) [force] = = Array ([docs] = 1 [hits] = 1)))
4 Query Query.log
Sphinx + SCWS + Mysql + PHP Full Text Search