Maison >développement back-end >tutoriel php >Comment utiliser le moteur de recherche Sphinx en PHP
Sphinx est un moteur de recherche efficace. La recherche par segmentation de mots est relativement rapide. L'index est créé et stocké dans les fichiers du disque dur. Il possède son propre ensemble de bases de données intégrées. cela peut aider tout le monde.
sphinx est un moteur de recherche efficace La vitesse de recherche par segmentation de mots est relativement rapide. L'index est établi et stocké dans le fichier du disque dur. Il n'interférera pas avec la base de données et possède son propre ensemble de bases de données intégrées
Si aptitude n'est pas installé, vous devez installer aptitude. d'abord parce que l'utilisation d'apt get install pour installer la commande suivante entraînera des problèmes.<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 |
修改配置文件如下<br>
<br> 1
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 2627 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
<br> source src1 { type = mysql sql_host = localhost sql_user = root sql_pass = magicmoma sql_db = coupon_20160901 sql_port = 3306 # facultatif, la valeur par défaut est 3306sql_query = SELECT couponid,title,description FROM app_coupon_api ##### 需要包含主键,分词索引字段 ######## } index test1 { source = src1 path = /var/lib/sphinxsearch/data/test1 #索引存放目录 docinfo = extern mlock = 0 morphologie = aucune 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 } 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 # pour que RT fonctionne > |
<br>
L'exécution de la segmentation des mots de commande générera un ensemble de fichiers d'index dans le répertoire /var/lib/sphinxsearch/data/test1 <br>sudo indexer -c /etc/sphinxsearch/sphinx.conf test1
test1 est le nom d'index du fichier de configuration ci-dessus
sudo search -c /etc/sphinxsearch/sphinx.conf google
1. Installer la bibliothèque de dépendances php sphinx
apt-get install aptitude
2. Installez l'extension php sphinx <br>sudo aptitude install libsphinxclient-dev libsphinxclient-0.0.1 -y
Installez pecl
<br>sudo apt-get install php-pear php5-dev
<br>3. Ajoutez le fichier de configuration php.ini. Extension Sphinx, <br>sudo pecl install sphinx
Mon fichier php.ini est
<br>sudo vim /etc/php5/fpm/php.ini
Ajoutez :<br>extension=sphinx.so
<br>4. Redémarrez php5-fpm et vérifiez si php charge le module sphinx <br>sudo /etc/init.d/php5-fpm restart
<br>5. Exécutez le programme de recherche en arrière-plan <br>sudo searchd -c /etc/sphinxsearch/sphinx.conf
<br>Port d'écoute par défaut dans le fichier de configuration : 9312
6. Appelez la recherche dans thinkphp <br>
<br> 1
2 3 4 5 6 7 8 9 10 11 12 13 |
<br> 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 ) ; } |
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!