Heim >Backend-Entwicklung >PHP-Tutorial >So verwenden Sie die Sphinx-Suchmaschine in PHP

So verwenden Sie die Sphinx-Suchmaschine in PHP

小云云
小云云Original
2018-03-21 14:12:102601Durchsuche

Sphinx ist eine effiziente Suchmaschine. Der Index wird in Festplattendateien erstellt und wird hoffentlich nicht beeinträchtigt es kann jedem helfen.

Verwenden Sie die Sphinx-Suchmaschine in PHP

Sphinx ist eine effiziente Suchmaschine. Der Index wird relativ schnell erstellt und in der Festplattendatei gespeichert stört die Datenbank nicht und verfügt über eine eigene Reihe integrierter Datenbanken

1. Installieren Sie Sphinx auf Ubuntu

Wenn aptitude nicht installiert ist, müssen Sie zuerst aptitude installieren Die Verwendung von apt get install zur Installation des folgenden Befehls führt zu Problemen.<br> sudo apt-get install aptitude<br>sudo aptitude install sphinx3 sphinx3-doc sphinxsearch sphinx-common -y

2. Konfiguration

<br>

1

<br>

1

2

<br>

cd /etc/sphinxsearch/

cp sphinx.conf.sample sphinx.conf

2

<br>

cd /etc/sphinxsearch/

cp sphinx.conf.sample sphinx .conf

修改配置文件如下<br>

<br>

1

<br>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

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 # optional, default is 3306

sql_query = SELECT couponid,title,description FROM app_coupon_api

##### 需要包含主键,分词索引字段 ########

}

index test1

{

source = src1

path = /var/lib/sphinxsearch/data/test1 #索引存放目录

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

}

2

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 # optional, Standard ist 3306sql_query = SELECT Couponid,title,description FROM app_coupon_api

##### 需要包含主键,分词索引字段 ########

}

index test1

{

source = src1

path = /var/lib/sphinxsearch/data/test1 #索引存放目录

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

}

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 # damit RT funktioniert

}

<br>

  1. Das Ausführen des Wortsegmentierungsbefehls generiert eine Reihe von Indexdateien im Verzeichnis /var/lib/sphinxsearch/data/test1 <br>sudo indexer -c /etc/sphinxsearch/sphinx.conf test1

    test1 ist der Indexname der oben genannten Konfigurationsdatei

4. Befehlszeilentestsuche

sudo search -c /etc/sphinxsearch/sphinx.conf google

2. Verwendung in PHP

1. Installieren Sie die PHP-Sphinx-Abhängigkeitsbibliothek

1. Installieren Sie aptitude

apt-get install aptitude<br>sudo aptitude install libsphinxclient-dev libsphinxclient-0.0.1 -y

2. Installieren Sie die PHP-Sphinx-Erweiterung

Installieren Sie pecl<br>sudo apt-get install php-pear php5-dev<br>Installieren Sie php. ini Sphinx-Erweiterung, <br>sudo pecl install sphinx Meine php.ini-Datei ist

, um den Speicherort meiner eigenen php.ini-Datei mit

<br>sudo vim /etc/php5/fpm/php.ini abzurufen

Hinzufügen:<br>extension=sphinx.so<br>4. Starten Sie php5-fpm neu und prüfen Sie, ob PHP das Sphinx-Modul lädt <br>sudo /etc/init.d/php5-fpm restart<br>5. Führen Sie das Suchprogramm im Hintergrund aus <br>sudo searchd -c /etc/sphinxsearch/sphinx.conf <br>Standard-Abhörport in der Konfigurationsdatei: 9312

6. Rufen Sie die Suche in thinkphp auf <br>

<br>

1

<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);

}

2

3$s->SetLimits(0, 1000, 1000);

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 , Beschreibung')->where(array('couponid'=>array('in',$result)))->select();

dump($list ) ;

}

Die Suche ist abgeschlossen und die Ergebnisse werden zurückgegeben (20 werden zurückgegeben von Standardmäßig ändern Sie die Anzahl der Rückgaben.) Durch Hinzufügen von ist die Suchgeschwindigkeit recht hoch. Die Indizierung der Titel- und Beschreibungsfelder von 800.000 Datenelementen unterstützt die inkrementelle Indizierung und mehrere Modi der Suche, und es gibt viele Informationen im Internet

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die Sphinx-Suchmaschine in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn