Sphinx/Coreseek簡介&安裝使用
Sphinx/Coreseek簡介&安裝使用
Sphinx/Coreseek簡介
在資料庫使用模糊匹配的時候,在資料量少的情況下,使用like '%keywork%'可以解決,但是在資料量大的情況下,查詢時間就變得難以忍受了。尤其是訪問量大的時候,僅僅靠mysql已經無法支撐業務。Sphinx是一個基於SQL的全文檢索引擎,可以結合MySQL,PostgreSQL做全文搜尋,它可以提供比資料庫本身更專業的搜尋功能,使得應用程式更容易實現專業化的全文檢索。Sphinx特別為一些指令碼語言設計搜尋API介面,如PHP,Python,Perl,Ruby等,同時為MySQL也設計了一個儲存引擎外掛。
Sphinx官網:http://sphinxsearch.com/
Sphinx下載地址:http://sphinxsearch.com/downloads/release/
Coreseek 是一款中文全文檢索/搜尋軟體,以GPLv2許可協議開源釋出,基於Sphinx研發並獨立釋出,專攻中文搜尋和資訊處理領域,適用於行業/垂直搜尋、論壇/站內搜尋、資料庫搜尋、文件/文獻檢索、資訊檢索、資料探勘等應用場景。對於中文的搜尋場景,coreseek比sphinx更為適合。
Coreseek官網:http://www.coreseek.cn/
Coreseek下載地址:http://www.coreseek.cn/products-install/
Coreseek安裝
linux下的安裝步驟:參考官方文件http://www.coreseek.cn/products-install/install_on_bsd_linux/
安裝完成後,在bin目錄下有幾個可執行檔案
-rwxr-xr-x 1 # # 6592748 Oct 15 2013 indexer #索引程式
-rwxr-xr-x 1 # # 6362996 Oct 15 2013 indextool
-rwxr-xr-x 1 # # 6434601 Oct 15 2013 search
-rwxr-xr-x 1 # # 7556446 Oct 15 2013 searchd #搜尋服務程式
-rwxr-xr-x 1 # # 6295538 Oct 15 2013 spelldump
Coreseek配置
安裝完成後,在/etc下面找到coreseek.conf配置檔案
#主索引資料來源——用於資料初始化
source article_main
{
type = mysql
sql_host = 127.0.0.1
sql_user = #資料庫賬號#
sql_pass = #資料庫密碼#
sql_db = #資料庫名稱#
sql_port = #資料庫埠號# # optional, default is 3306
sql_sock = /tmp/mysql.sock
sql_query_pre = SET NAMES utf8 #預執行語句,避免如果資料庫預設字符集不是utf8,會導致查詢不命中的情況#
sql_query = #查詢的sql語句#
#以下是SQL語句返回的值
sql_attr_uint = CATE_ID
sql_attr_uint = STATUS
sql_attr_uint = IS_ABLE
sql_attr_str2ordinal = SITE_ID
sql_attr_timestamp = ITIME
sql_ranged_throttle = 0
sql_query_info = SELECT * FROM article WHERE ID=$id
}
#增量索引資料來源——用於資料更新
source article_delta : article_main #這裡繼承了article_main的配置
{
sql_query_pre = SET NAMES utf8 #繼承方式,不能去掉該項
sql_query = #查詢的sql語句#
}
#主索引
index article_main
{
source = article_main
path = /usr/local/coreseek/var/data/article_main #指定索引的存放路徑
docinfo = extern
mlock = 0
morphology = none
charset_dictpath = /usr/local/mmseg3/etc/
min_word_len = 1
charset_type = zh_cn.utf-8
html_strip = 0
}
#增量索引
index article_delta : article_main
{
source = article_delta
path = /usr/local/coreseek/var/data/article_delta #指定索引的存放路徑
}
indexer
{
mem_limit = 1024M
}
searchd
{
#listen = 127.0.0.1:9312
log = /usr/local/coreseek/var/log/searchd.log
query_log = /usr/local/coreseek/var/log/query.log
read_timeout = 5
client_timeout = 5
max_children = 50
pid_file = /usr/local/coreseek/var/log/searchd.pid
max_matches = 1000 #最大匹配數,api的值不能大於該值
seamless_rotate = 0
preopen_indexes = 0
unlink_old = 1
}
啟動coreseek服務並使用PHP連線
bin/searchd -c etc/coreseek.conf
這裡使用PHP呼叫coreseek的服務,在官網上下載SphinxClient這個class即可,以下是簡單的示例程式碼:
$cl = new SphinxClient ();
$cl->_maxmatches = 200;
$cl->SetServer ('127.0.0.1',9312);
$cl->SetConnectTimeout ( 3 );//超時時間
$cl->SetArrayResult ( true );//返回陣列格式
$cl->SetLimits($start, $page_size);
$cl->SetMatchMode ( SPH_MATCH_ANY );
$cl->SetRankingMode( SPH_RANK_PROXIMITY_BM25);
$cl->SetFilter("is_able", array(1));
$cl->SetSortMode ( SPH_SORT_EXTENDED , '@relevance DESC, ITIME DESC ' );//先按時間段排序,再按相關度排序。
$cl->AddQuery ($keyword, "article_main,article_delta");
$results = $cl->RunQueries();
定時更新文章
由於文章內容會不斷變化,每次更新重新索引所有文章是不現實的,coreseek提供了增量索引。我們制定了索引的更新策略。
#每天凌晨4點更新一次
00 04 * * * /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/coreseek.conf --all --rotate
#十分鐘更新一次
*/10 * * * * /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/coreseek.conf article_delta --rotate
相關文章
- Coreseek-帶中文分詞的Sphinx中文分詞
- Locust 簡介及安裝使用
- 最新版gradle安裝使用簡介Gradle
- Coreseek 安裝出現 Makefile.in 檔案找不到
- PostgreSQL簡介及安裝SQL
- Rancher簡介與安裝
- Allure簡介及安裝
- RabbitMQ簡介及安裝MQ
- Django簡介及安裝Django
- Docker簡介及安裝Docker
- KVM簡介,安裝及常見使用詳解
- Redis簡介與安裝(Windows)RedisWindows
- Zabbix 簡介與yum安裝
- scrapy的簡介與安裝
- java簡介--環境安裝Java
- Chaosblade簡介及安裝部署
- Docker常規安裝簡介Docker
- 1、Linux簡介及安裝Linux
- OpenCV 簡介與安裝方法OpenCV
- consul的簡介及安裝
- lnmp+coreseek實現站內全文檢索(安裝篇)LNMP
- PostgreSQL簡介及安裝步驟SQL
- Spring的簡介安裝及配置Spring
- 1.Cobaltstrike 安裝與簡介
- 大道至簡,唯快不破!Onethink(ThinkPHP)+MySQL+Coreseek(sphinx)+Bootstrap開發的百度雲網盤資源搜尋PHPMySqlboot
- Docker 理論簡介及安裝教程Docker
- 01 . Vue簡介,原理,環境安裝Vue
- redis 簡介及windows 下的redis 安裝RedisWindows
- 13 Spring Cloud Alibaba簡介和Nacos安裝SpringCloud
- Multisim14--軟體簡介及安裝教程(內含安裝包)
- Python之pypmml:pypmml的簡介、安裝、使用方法之詳細攻略Python
- etcd簡介及叢集安裝部署使用
- Jira使用簡介 HP ALM使用簡介
- Redis系列(一):Redis簡介及環境安裝Redis
- Docker-ElasticSearch7.8.1 安裝及簡單介紹DockerElasticsearch
- K8s(Kubernetes)簡介及安裝部署K8S
- pyenv的安裝和簡單使用
- Jupyter Notebook介紹、安裝及使用教程
- 使用docker安裝gitlab以及gitlab簡單使用DockerGitlab