sphinx.conf listen = 9306:mysql41,Sphinx 安裝與使用

Sphinx 優點

高速索引(接近10M/S)

高速搜索(2-4G文本搜索耗時不到0.1秒)

高可用性(單CPU支持100GB文本,100M文檔)

提供相關性排名、分布式搜索、文檔摘要(高亮顯示)

Sphinx 缺點

必須有主鍵

主鍵必須是整形

不負責數據存儲

配置復雜

Sphinx是介於PHP和mysql的中間層,它提供比mysql更專業的搜索功能,性能更高,因為存在於mysql之前,可以更好的緩解數據庫壓力

安裝

sudo apt-get install sphinxsearch -y

安裝完成后在 / etc / sphinxsearch / 目錄下有以下4個文件

bfbb5832c81aa4383051d3ef6a863469.png

example.sql 數據源,用於測試

sphinx.conf.dist 完整的配置,包含全部配置

sphinx.conf.sample 配置參考

sphinx-min.conf.dist  精簡配置,包含主要配置

我們來看看 sphinx-min.conf.dist 中的配置項

拷貝sphinx-min.conf.dist 到當前目錄下 sphinx.conf

源配置:

source src1 { type=mysql sql_host=localhost sql_user=test sql_pass=sql_db=test sql_port= 3306 # optional, default is 3306sql_query=\ SELECTid, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content \ FROM documents sql_attr_uint=group_id sql_attr_timestamp=date_added }

源塊包含源代碼,用戶名和密碼到MySQL服務器的類型。 所述的第一列sql_query應該是唯一的ID。 SQL查詢將在每個索引上運行,並將數據轉儲到Sphinx索引文件。 下面是每個字段和源塊本身的描述。

type :數據源索引的類型。 在我們的例子,這是MySQL。 其他支持的類型包括pgsql,mssql,xmlpipe2,odbc等。

sql_host :主機名MySQL的主機。 在我們的例子,這是localhost 。 這可以是域或IP地址。

sql_user :數據庫用戶名

sql_pass :密碼

sql_db :存儲數據的數據庫的名稱

sql_query :查詢從數據庫到索引那轉儲數據。

索引配置:

index test1 { source=src1 path= /var/lib/sphinxsearch/data/test1 }

source :源塊的名稱。 在我們的例子,這是src1的 。

path :路徑保存索引。

端口和常量配置:

searchd { listen= 9312listen= 9306:mysql41 log= /var/lib/sphinxsearch/log/searchd.log query_log= /var/lib/sphinxsearch/log/query.log read_timeout= 5max_children= 30pid_file= /var/run/sphinxsearch/searchd.pid seamless_rotate= 1preopen_indexes= 1unlink_old= 1workers= threads # forRT to work binlog_path= /var/lib/sphinxsearch/data }

該searchd的組件包含端口和其他變量來運行Sphinx守護進程。

listen :這Sphinx守護進程運行的端口,后面的協議。 在我們的例子,這是9306:mysql41。 已知的協議是:Sphinx (SphinxAPI)和:mysql41(SphinxQL)

query_log :路徑保存查詢日志

pid_file :到Sphinx守護進程的PID文件的路徑。

seamless_rotate :同時旋轉海量數據預緩存的指標,防止searchd的攤位。

preopen_indexes :是否強行盤前在啟動時的所有索引。

unlink_old :是否刪除成功旋轉舊的索引拷貝。

管理索引

將數據添加到Sphinx索引

sudo indexer --all

Sphinx 2.2.9-id64-release (rel22-r5006)

Copyright (c) 2001-2015, Andrew Aksyonoff

Copyright (c) 2008-2015, Sphinx Technologies Inc (http://sphinxsearch.com)

using config file '/etc/sphinxsearch/sphinx.conf'...

indexing index 'test1'...

collected 4 docs, 0.0 MB

sorted 0.0 Mhits, 100.0% done

total 4 docs, 193 bytes

total 0.032 sec, 5922 bytes/sec, 122.75 docs/sec

skipping non-plain index 'testrt'...

total 4 reads, 0.000 sec, 0.1 kb/call avg, 0.0 msec/call avg

total 12 writes, 0.000 sec, 0.1 kb/call avg, 0.0 msec/call avg

表示創建索引成功

在生產環境中,有必要保持索引為最新。 為了做到這一點,讓我們創建一個cronjob。 首先,打開crontab

crontab -e

可能會詢問您要使用哪個文本編輯器。 選擇你喜歡的; 在本教程中,我們使用nano 。

隨后的cronjob將每小時運行一次,並使用我們之前創建的配置文件向索引添加新數據。 將其復制並粘貼到文件末尾,然后保存並關閉文件

@hourly /usr/bin/indexer --rotate --config /etc/sphinxsearch/sphinx.conf --all

現在Sphinx已經完全設置和配置,我們可以啟動服務並嘗試

啟動 sphinx

默認情況下,Sphinx守護程序關閉。 首先,我們將改變這一行啟用START=no到START=yes中/etc/default/sphinxsearch

sudo sed -i 's/START=no/START=yes/g' /etc/default/sphinxsearch

然后,使用systemctl重啟Sphinx守護進程

sudo systemctl restart sphinxsearch.service

要檢查Sphinx守護程序是否正確運行,請運行

sudo systemctl status sphinxsearch.service

4e957897fced19cafcb834acdec35e44.png

測試

現在,一切都設置好了,讓我們測試搜索功能。 使用MySQL接口連接到SphinxQL(在端口9306上)。 您提示將改變為mysql>

mysql -h0 -P9306

搜索:test1 代表sphinx配置文件中索引名稱  match(搜索條件)

select * from test1 where match('another');

測試關鍵字

CALL KEYWORDS ('test one three', 'test1', 1);

輸出:

+------+-----------+------------+------+------+

| qpos | tokenized | normalized | docs | hits |

+------+-----------+------------+------+------+

| 1 | test | test | 3 | 5 |

| 2 | one | one | 1 | 2 |

| 3 | three | three | 0 | 0 |

+------+-----------+------------+------+------+

3 rows in set (0.00 sec)

在結果上面可以看到,在test1的指數,Sphinx發現:

5個匹配在3個文檔中的關鍵字'test'

2在1個文檔中匹配關鍵字“1”

0匹配0個文檔中的關鍵字'three'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值