sphinx scws 全文检索 安装 配置 详解
这次搭建的环境:centos 6.5 x86,php 5.3.3,mysql 5.5.8,三次搭建各不相同
一,下载sphinx,scws相关包
sphinx下载地址:http://sphinxsearch.com/downloads/release/
sphinx php扩展下载地址:http://pecl.php.net/package/sphinx
scws下载地址:http://www.xunsearch.com/scws/download.php
scws词库下载地址:http://www.xunsearch.com/scws/down/scws-dict-chs-utf8.tar.bz2
二,安装sphinx,scws,以及php扩展
1,安装sphinx
# tar zxvf sphinx-2.2.5-release.tar.gz # cd sphinx-2.2.5-release # ./configure --prefix=/usr/local/sphinx2 --with-mysql=/usr/local/mysql # make && make install
2,安装sphinx客户端
查看复制打印?
# cd api/libsphinxclient //sphinx-2.2.5-release目录下 # ./configure --prefix=/usr/local/sphinx2/libsphinxclient # make && make install
,安装sphinx php扩展
# tar zxvf sphinx-1.3.1.tgz
# cd sphinx-1.3.1
# phpize
# ./configure --with-sphinx=/usr/local/sphinx2/libsphinxclient --with-php-config=/usr/bin/php-config
# make && make install
4,安装scws
查看复制打印?
# tar xvjf scws-1.2.2.tar.bz2 # mkdir /usr/local/scws # cd scws-1.2.2 # ./configure --prefix=/usr/local/scws/ # make && make install
5,安装scws php扩展
# cd ./phpext/ # phpize # ./configure --with-php-config=/usr/bin/php-config # make && make install
三,配置sphinx,scws,php等
1,创建测试表和数据
mysql> desc users; +----------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+----------------+ | user_id | int(11) | NO | PRI | NULL | auto_increment | | username | varchar(20) | NO | | NULL | | +----------+-------------+------+-----+---------+----------------+ 2 rows in set (0.00 sec) mysql> select * from users; +------------+------------+ | user_id | username | +------------+------------+ | 1311895262 | 张三 | | 1311895263 | tank张二 | | 1311895264 | tank张一 | | 1311895265 | tank张 | +------------+------------+ 4 rows in set (0.00 sec)
mysql> desc users; +----------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+----------------+ | user_id | int(11) | NO | PRI | NULL | auto_increment | | username | varchar(20) | NO | | NULL | | +----------+-------------+------+-----+---------+----------------+ 2 rows in set (0.00 sec) mysql> select * from users; +------------+------------+ | user_id | username | +------------+------------+ | 1311895262 | 张三 | | 1311895263 | tank张二 | | 1311895264 | tank张一 | | 1311895265 | tank张 | +------------+------------+ 4 rows in set (0.00 sec)
上面二张表,都是真实的mysql表
2,配置sphinx.conf,加上以下内容
source myorder { type = mysql sql_host = localhost sql_user = root sql_pass = sql_db = test sql_query_pre = SET NAMES utf8 sql_query_pre = SET SESSION query_cache_type=OFF sql_query = \ SELECT a.id, a.user_id,b.username, UNIX_TIMESTAMP(a.create_time) AS create_time, a.product_name, a.summary \ FROM orders a left join users b on a.user_id = b.user_id sql_attr_uint = user_id sql_field_string = username sql_field_string = product_name sql_attr_timestamp = create_time sql_ranged_throttle = 0 #sql_query_info = SELECT * FROM orders WHERE id=$id } index myorder { source = myorder path = /usr/local/sphinx2/var/data/myorder docinfo = extern mlock = 0 morphology = none min_word_len = 1 #charset_type = zh_cn.utf-8 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 }
注意,新的sphinx,不支持sql_query_info,charset_type设置了,
WARNING: key 'sql_query_info' was permanently removed from Sphinx configuration. Refer to documentation for details.
WARNING: key 'charset_type' was permanently removed from Sphinx configuration. Refer to documentation for details.
3,安装scws词库
# tar xvjf scws-dict-chs-utf8.tar.bz2 -C /usr/local/scws/etc/ # chown tank:tank /usr/local/scws/etc/dict.utf8.xdb
在这里一定要加权限,也就是说让php-fpm或者php-cgi的运行用户,拥有dict.utf8.xdb的所有权限。如果不这么做的话,php 扩展调用词库会报如下错误:
Warning: SimpleCWS::add_dict(): Failed to add the dict file
怎么查看php-fpm,php-cgi的运行用户呢?
# ps aux |grep php-fpm root 23487 0.0 0.1 284928 4652 ? Ss Nov05 0:00 php-fpm: master process (/etc/php-fpm.conf) tank 23488 0.0 1.3 336108 52328 ? S Nov05 0:02 php-fpm: pool www //在这里就是tank了 tank 23489 0.0 0.8 310484 34028 ? S Nov05 0:02 php-fpm: pool www tank 23490 0.0 0.7 306620 30156 ? S Nov05 0:02 php-fpm: pool www tank 23491 0.0 0.8 310096 33748 ? S Nov05 0:02 php-fpm: pool www tank 23492 0.0 1.2 331812 47712 ? S Nov05 0:02 php-fpm: pool www tank 24669 0.0 1.2 333520 48896 ? S Nov05 0:01 php-fpm: pool www tank 29747 0.0 0.7 305000 27340 ? S 03:27 0:00 php-fpm: pool www tank 29761 0.0 1.0 320536 39928 ? S 03:27 0:00 php-fpm: pool www root 30705 0.0 0.0 103260 872 pts/5 S+ 04:11 0:00 grep php-fpm
4,配置php.ini
# vim /etc/php.ini [sphinx] extension = sphinx.so [scws] extension = scws.so scws.default.charset = utf-8 scws.default.fpath = /usr/local/scws/etc
四,启动sphinx,php-fpm
1,启动sphinx
# /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
2,重启php-fpm
# /etc/init.d/php-fpm restart
前二次,我安装sphinx,必须在mysql中安装sphinx存储插件,而这次没有,看下图
五,测试sphinx全文检索
1,命令行的测试
[root@localhost phpext]# mysql -h 127.0.0.1 -P 9306 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 2.2.5-id64-release (r4825) Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> select * from myorder where match('张'); +------+------------+------------+-------------+----------------+ | id | user_id | username | create_time | product_name | +------+------------+------------+-------------+----------------+ | 9 | 1311895262 | 张三 | 1406823894 | tank is 坦克 | | 10 | 1311895263 | tank张二 | 1406823894 | tank is 坦克 | | 11 | 1311895264 | tank张一 | 1406823894 | tank is 坦克 | | 12 | 1311895265 | tank张 | 1406823894 | tank is 坦克 | +------+------------+------------+-------------+----------------+ 4 rows in set (0.00 sec)
2,利用php 扩展
<?php header("Content-type: text/html; charset=utf-8"); $b_time = microtime(true); echo '<p>'.$b_time.'</p>'; $key = "张三"; $index = "myorder"; //========================================分词 $so = scws_new(); $so->set_charset('utf-8'); //默认词库 $so->add_dict(ini_get('scws.default.fpath') . '/dict.utf8.xdb'); //自定义词库 // $so->add_dict('./dd.txt',SCWS_XDICT_TXT); //默认规则 $so->set_rule(ini_get('scws.default.fpath') . '/rules.utf8.ini'); //设定分词返回结果时是否去除一些特殊的标点符号 $so->set_ignore(true); //设定分词返回结果时是否复式分割,如“中国人”返回“中国+人+中国人”三个词。 // 按位异或的 1 | 2 | 4 | 8 分别表示: 短词 | 二元 | 主要单字 | 所有单字 //1,2,4,8 分别对应常量 SCWS_MULTI_SHORT SCWS_MULTI_DUALITY SCWS_MULTI_ZMAIN SCWS_MULTI_ZALL $so->set_multi(false); //设定是否将闲散文字自动以二字分词法聚合 $so->set_duality(false); //设定搜索词 $so->send_text($key); $words_array = $so->get_result(); $words = ""; foreach($words_array as $v) { $words = $words.'|('.$v['word'].')'; } //加入全词 #$words = '('.$key.')'.$words; $words = trim($words,'|'); $so->close(); echo '<p>输入:'.$key.'</p>'; echo '<p>分词:'.$words.'</p>'; //========================================搜索 $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; echo '<p>'.$e_time.'</p>'; echo '<p>'.$time.'</p>'; exit; ?>
结果如下:
<p>1415214126.9106</p><p>输入:张三</p><p>分词:(张三)</p>Array ( [error] => [warning] => [status] => 0 [fields] => Array ( [0] => username [1] => product_name [2] => summary ) [attrs] => Array ( [user_id] => 1 [username] => 7 [create_time] => 2 [product_name] => 7 ) [matches] => Array ( [0] => Array ( [id] => 9 [weight] => 2500 [attrs] => Array ( [user_id] => 1311895262 [username] => 张三 [create_time] => 1406823894 [product_name] => tank is 坦克 ) ) ) [total] => 1 [total_found] => 1 [time] => 0 [words] => Array ( [张] => Array ( [docs] => 4 [hits] => 4 ) [三] => Array ( [docs] => 1 [hits] => 1 ) ) ) <p>1415214126.9516</p><p>0.041085958480835</p>

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Möglicherweise können Sie keine Gastzusätze zu einer virtuellen Maschine in OracleVirtualBox installieren. Wenn wir auf Geräte>InstallGuestAdditionsCDImage klicken, wird einfach ein Fehler wie unten gezeigt ausgegeben: VirtualBox – Fehler: Virtuelles Laufwerk C kann nicht eingefügt werden: DateienOracleVirtualBoxVBoxGuestAdditions.iso in die Ubuntu-Maschine programmieren In diesem Beitrag werden wir verstehen, was passiert, wenn Sie. Was zu tun ist, wenn Sie Gastzusätze können in VirtualBox nicht installiert werden. Gastzusätze können nicht in VirtualBox installiert werden. Wenn Sie es nicht in Virtua installieren können

Wenn Sie die Installationsdatei von Baidu Netdisk erfolgreich heruntergeladen haben, sie aber nicht normal installieren können, liegt möglicherweise ein Fehler in der Integrität der Softwaredatei vor oder es liegt ein Problem mit den verbleibenden Dateien und Registrierungseinträgen vor Lassen Sie uns die Analyse des Problems vorstellen, dass Baidu Netdisk erfolgreich heruntergeladen, aber nicht installiert werden kann. Analyse des Problems, dass Baidu Netdisk erfolgreich heruntergeladen, aber nicht installiert werden konnte 1. Überprüfen Sie die Integrität der Installationsdatei: Stellen Sie sicher, dass die heruntergeladene Installationsdatei vollständig und nicht beschädigt ist. Sie können es erneut herunterladen oder versuchen, die Installationsdatei von einer anderen vertrauenswürdigen Quelle herunterzuladen. 2. Deaktivieren Sie Antivirensoftware und Firewall: Einige Antivirensoftware oder Firewallprogramme verhindern möglicherweise die ordnungsgemäße Ausführung des Installationsprogramms. Versuchen Sie, die Antivirensoftware und die Firewall zu deaktivieren oder zu beenden, und führen Sie dann die Installation erneut aus

Die Installation von Android-Anwendungen unter Linux war für viele Benutzer schon immer ein Problem. Insbesondere für Linux-Benutzer, die gerne Android-Anwendungen verwenden, ist es sehr wichtig, die Installation von Android-Anwendungen auf Linux-Systemen zu beherrschen. Obwohl die direkte Ausführung von Android-Anwendungen unter Linux nicht so einfach ist wie auf der Android-Plattform, können wir mithilfe von Emulatoren oder Tools von Drittanbietern Android-Anwendungen unter Linux dennoch problemlos genießen. Im Folgenden wird erläutert, wie Android-Anwendungen auf Linux-Systemen installiert werden.

Detaillierte Erläuterung der Divisionsoperation in OracleSQL In OracleSQL ist die Divisionsoperation eine häufige und wichtige mathematische Operation, die zur Berechnung des Ergebnisses der Division zweier Zahlen verwendet wird. Division wird häufig in Datenbankabfragen verwendet. Daher ist das Verständnis der Divisionsoperation und ihrer Verwendung in OracleSQL eine der wesentlichen Fähigkeiten für Datenbankentwickler. In diesem Artikel werden die relevanten Kenntnisse über Divisionsoperationen in OracleSQL ausführlich erörtert und spezifische Codebeispiele als Referenz für die Leser bereitgestellt. 1. Divisionsoperation in OracleSQL

Grundlegendes zu Linux Bashrc: Funktion, Konfiguration und Verwendung In Linux-Systemen ist Bashrc (BourneAgainShellruncommands) eine sehr wichtige Konfigurationsdatei, die verschiedene Befehle und Einstellungen enthält, die beim Systemstart automatisch ausgeführt werden. Die Bashrc-Datei befindet sich normalerweise im Home-Verzeichnis des Benutzers und ist eine versteckte Datei. Ihre Funktion besteht darin, die Bashshell-Umgebung für den Benutzer anzupassen. 1. Bashrc-Funktionseinstellungsumgebung

Wenn Sie Docker verwendet haben, müssen Sie Daemons, Container und ihre Funktionen verstehen. Ein Daemon ist ein Dienst, der im Hintergrund läuft, wenn ein Container bereits in einem System verwendet wird. Podman ist ein kostenloses Verwaltungstool zum Verwalten und Erstellen von Containern, ohne auf einen Daemon wie Docker angewiesen zu sein. Daher bietet es Vorteile bei der Verwaltung von Containern, ohne dass langfristige Backend-Dienste erforderlich sind. Darüber hinaus erfordert Podman keine Root-Berechtigungen. In dieser Anleitung wird ausführlich erläutert, wie Sie Podman auf Ubuntu24 installieren. Um das System zu aktualisieren, müssen wir zunächst das System aktualisieren und die Terminal-Shell von Ubuntu24 öffnen. Sowohl während des Installations- als auch des Upgrade-Vorgangs müssen wir die Befehlszeile verwenden. eine einfache

Während des Lernens in der Oberstufe machen sich einige Schüler sehr klare und genaue Notizen und machen sich mehr Notizen als andere in derselben Klasse. Für manche ist das Notieren ein Hobby, für andere ist es eine Notwendigkeit, wenn sie leicht kleine Informationen über etwas Wichtiges vergessen. Die NTFS-Anwendung von Microsoft ist besonders nützlich für Studierende, die wichtige Notizen außerhalb der regulären Vorlesungen speichern möchten. In diesem Artikel beschreiben wir die Installation von Ubuntu-Anwendungen auf Ubuntu24. Aktualisieren des Ubuntu-Systems Vor der Installation des Ubuntu-Installationsprogramms müssen wir auf Ubuntu24 sicherstellen, dass das neu konfigurierte System aktualisiert wurde. Wir können das bekannteste „a“ im Ubuntu-System verwenden

Detaillierte Schritte zur Installation der Go-Sprache auf einem Win7-Computer. Go (auch bekannt als Golang) ist eine von Google entwickelte Open-Source-Programmiersprache. Sie ist einfach, effizient und bietet eine hervorragende Parallelitätsleistung. Sie eignet sich für die Entwicklung von Cloud-Diensten, Netzwerkanwendungen usw Back-End-Systeme. Durch die Installation der Go-Sprache auf einem Win7-Computer können Sie schnell mit der Sprache beginnen und mit dem Schreiben von Go-Programmen beginnen. Im Folgenden werden die Schritte zur Installation der Go-Sprache auf einem Win7-Computer im Detail vorgestellt und spezifische Codebeispiele angehängt. Schritt 1: Laden Sie das Go-Sprachinstallationspaket herunter und besuchen Sie die offizielle Go-Website
