sphinx安裝使用

2021-09-02 21:35:59 字數 3807 閱讀 7780

解壓收編譯配置

$ ./configure --prefix=/usr/local/sphinx --with-mysql

$ make

$ make install

$ cd /usr/local/sphinx/etc/

$ cp sphinx.conf.dist sphinx.conf

使用sphinx自帶的例子

匯入測試資料

$ mysql-u root -p  < /usr/local/sphinx/etc/example.sql

設定資料庫資訊

$ vim sphinx.conf

##### 索引源 ###########

source src1

type = mysql            #####資料來源型別

sql_host = localhost    ######mysql主機

sql_user = root         ########mysql使用者名稱

sql_pass = pwd          ############mysql密碼

sql_db = test           #########mysql資料庫名

sql_port= 3306          ###########mysql埠

sql_query_pre = set names utf8 ###mysql檢索編碼

####設定資料來源

sql_query = sql_query                = \

select id, group_id, unix_timestamp(date_added) as date_added, title, content \

from documents

設定索引

index test1

source          = src1 ####宣告索引源

path            = /usr/local/sphinx/var/data/test1 #######索引檔案存放路徑及索引的檔名

docinfo = extern ##### 文件資訊儲存方式

生成索引

$ bin/indexer -c etc/sphinx.conf test1

$ cd /usr/local/software/sphinx-2.2.11-release

$ php test.php test

php呼叫demo

##### 索引源 ###########

source src1

type = mysql    #####資料來源型別

sql_host = 192.168.1.10    ######mysql主機

sql_user = root   ########mysql使用者名稱

sql_pass = pwd ############mysql密碼

sql_db = test #########mysql資料庫名

sql_port= 3306 ###########mysql埠

sql_query_pre = set names utf8 ###mysql檢索編碼

sql_query = select * from task ####### 獲取資料的sql

#####以下是用來過濾或條件查詢的屬性############

####自定義返回的字段

sql_field_string        = id

sql_field_string        = name

### 索引 ###

index test1

source = article_src ####宣告索引源

path = /usr/local/sphinx/var/data/article #######索引檔案存放路徑及索引的檔名

docinfo = extern ##### 文件資訊儲存方式

mlock = 0 ###快取資料記憶體鎖定

morphology = none

min_word_len = 1 #### 索引的詞最小長度

charset_type = utf-8 #####資料編碼

##### 字元表,注意:如使用這種方式,則sphinx會對中文進行單字切分,

##### 即進行字索引,若要使用中文分詞,必須使用其他分詞外掛程式如 coreseek,sfc

######### 索引器配置 #####

indexer

mem_limit = 256m ####### 記憶體限制

############ sphinx 服務程序 ########

searchd

listen = 9312 ### 監聽埠

log = /usr/local/sphinx/var/log/searchd.log #### 服務程序日誌 ,一旦sphinx出現異常,基本上可以從這裡查詢有效資訊,輪換(rotate)出的問題一般可在此尋到答案

read_timeout = 5 ## 請求超時

max_children = 30 ### 同時可執行的最大searchd 程序數

pid_file = /usr/local/sphinx/var/log/searchd.pid #######程序id檔案

max_matches = 1000 ### 查詢結果的最大返回數

seamless_rotate = 1 ### 是否支援無縫切換,做增量索引時通常需要

生成索引(只生成test1索引檔案)

$ bin/indexer -c etc/sphinx.conf test1

如果重建索引時守護程序正在執行,會報錯,需要執行下面的指令,會重建索引並且重開守護程序

$ /usr/local/sphinx/bin/indexer -c /usr/local/sphinx/etc/test.conf--all --rotate

--all 引數表示將生成所有索引檔案

searchd作為sphinx在伺服器的守護程序

$ /usr/local/sphinx/bin/searchd -c /usr/local/sphinx/etc/sphinx.conf

停止$ /usr/local/sphinx/bin/searchd -c /usr/local/sphinx/etc/sphinx.conf --stop

php端

<?php

require "sphinxapi.php"; //sphinx的api目錄(如:/usr/local/software/sphinx-2.2.11-release/api/)

$cl = new sphinxclient();

$cl->setserver("localhost", 9312);

#$cl->setmatchmode(sph_match_extended); //使用多欄位模式

$res = $cl->query($keyword, "test1");

//$err = $cl->getlasterror();

$res = !empty($res['matches']) ? $res['matches'] : "";

print_r($res);

結果:array

[1] => array

[weight] => 1557

[attrs] => array

[name] => zhengzhou

[3] => array

[weight] => 1557

[attrs] => array

[name] => kaifeng-zhengzhou

Sphinx安裝與使用

首先你要有mysql環境,我使用的是lnmp環境 wget tar zxvf sphinx 2.2.11 release tar.gz cd sphinx 2.2.11 release tar.gz configure prefix usr local sphinx with mysql usr l...

sphinx安裝及使用

yum install mariadb devel postgresql devel unixodbc devel libmysqlclient18 libmysqlclient dev libmysqlcppconn7 libmysqlcppconn dev minimal sphinx conf...

sphinx安裝,配置,使用

sphinx的使用兩種方式 第一種 使用sphinx的api來操作sphinx 常用 sphinx可以使用api類,也可以將api編譯到php中做為擴充套件 第二種 使用mysql的sphinx的儲存引擎 sphinx 這是英文的全文檢索引擎 coreseek 這是支援中文詞庫的全文檢索引擎 區別 ...