Linux下PHP+MySQL+CoreSeek中文检索引擎配置
Web環(huán)境:Nginx+PHP+MySQL
站點(diǎn)根目錄:/usr/local/nginx/html
目的:安裝coreseek中文檢索引擎,配置MySQL數(shù)據(jù)庫(kù)訪問(wèn)接口,使用PHP程序?qū)崿F(xiàn)中文檢索。
CoreSeek官方網(wǎng)站:
http://www.coreseek.cn/
http://www.coreseek.cn/products/=%22/products-install/step_by_step/
http://www.coreseek.cn/products-install/mysql/
具體操作:
一、安裝編譯工具
yum install make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel二 、安裝CoreSeek
1、下載CoreSeek
下載地址:http://www.coreseek.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz
上傳coreseek-3.2.14.tar.gz到/usr/local/src目錄
2、安裝mmseg
cd /usr/local/srctar zxvf coreseek-3.2.14.tar.gz??#解壓cd coreseek-3.2.14cd mmseg-3.2.14./bootstrap????#輸出的warning信息可以忽略,如果出現(xiàn)error則需要解決./configure --prefix=/usr/local/mmseg3??#配置make??#編譯make install??#安裝3、安裝CoreSeek
cd /usr/local/srccd coreseek-3.2.14cd csft-3.2.14sh buildconf.sh????#輸出的warning信息可以忽略,如果出現(xiàn)error則需要解決./configure --prefix=/usr/local/coreseek? --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql??#配置make??#編譯make install??#安裝三、測(cè)試mmseg分詞、coreseek搜索、MySQL數(shù)據(jù)源
cd /usr/local/srccd coreseek-3.2.14cd testpackcat /usr/local/src/coreseek-3.2.14/testpack/var/test/test.xml????#此時(shí)應(yīng)該正確顯示中文,如下圖所示 /usr/local/mmseg3/bin/mmseg? -d? /usr/local/mmseg3/etc? /usr/local/src/coreseek-3.2.14/testpack/var/test/test.xml /usr/local/coreseek/bin/indexer -c /usr/local/src/coreseek-3.2.14/testpack/etc/csft.conf --all /usr/local/coreseek/bin/search -c /usr/local/src/coreseek-3.2.14/testpack/etc/csft.conf 網(wǎng)絡(luò)搜索 /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/sphinx-min.conf.dist /usr/local/coreseek/bin/indexer -c /usr/local/src/coreseek-3.2.14/testpack/etc/csft.conf --all --rotate??#啟動(dòng)服務(wù),更新索引測(cè)試MySQL數(shù)據(jù)源:
測(cè)試數(shù)據(jù)庫(kù)下載:http://www.coreseek.cn/uploads/csft/test/documents.sql
上傳documents.sql到/usr/local/src目錄
導(dǎo)入數(shù)據(jù)庫(kù)到MySQL從服務(wù)器:
mysql? -u root -p??#進(jìn)入MySQL控制臺(tái)create database documents;???#創(chuàng)建數(shù)據(jù)庫(kù)use documents????#進(jìn)入數(shù)據(jù)庫(kù)source? /usr/local/src/documents.sql??#導(dǎo)入備份文件到數(shù)據(jù)庫(kù)exit?#退出MySQL控制臺(tái) cp? /usr/local/src/coreseek-3.2.14/testpack/etc/csft_mysql.conf? /usr/local/coreseek/etc/csft_mysql.conf??#拷貝MySQL數(shù)據(jù)源配置文件ln -s? /usr/local/coreseek/etc/csft_mysql.conf? /etc/csft_mysql.conf??#添加軟連接vi? /etc/csft_mysql.conf??#編輯,修改 #MySQL數(shù)據(jù)源配置,詳情請(qǐng)查看:http://www.coreseek.cn/products-install/mysql/#請(qǐng)先將var/test/documents.sql導(dǎo)入數(shù)據(jù)庫(kù),并配置好以下的MySQL用戶(hù)密碼數(shù)據(jù)庫(kù)#源定義source mysql{type??????????????????? =?mysqlsql_host??????????????? =?localhostsql_user??????????????? =?root??#賬號(hào)sql_pass??????????????? =123456?#密碼sql_db??????????????????? =?documents??#MySQL數(shù)據(jù)庫(kù)名稱(chēng)sql_port??????????????? =?3306sql_query_pre??????????? = SET NAMES utf8sql_query??????????????? = SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content FROM documents#sql_query第一列id需為整數(shù)#title、content作為字符串/文本字段,被全文索引sql_attr_uint??????????? = group_id?????????? #從SQL讀取到的值必須為整數(shù)sql_attr_timestamp??????? = date_added #從SQL讀取到的值必須為整數(shù),作為時(shí)間屬性sql_query_info_pre????? = SET NAMES utf8??????????????????????????????????????? #命令行查詢(xún)時(shí),設(shè)置正確的字符集sql_query_info??????????? = SELECT * FROM documents WHERE id=$id #命令行查詢(xún)時(shí),從數(shù)據(jù)庫(kù)讀取原始數(shù)據(jù)信息}#index定義index mysql{source??????????? = mysql???????????? #對(duì)應(yīng)的source名稱(chēng)path????? ??????=?/usr/local/coreseek/var/data/mysql?#請(qǐng)修改為實(shí)際使用的絕對(duì)路徑,例如:/usr/local/coreseek/var/...docinfo??????????? = externmlock??????????? = 0morphology??????? = nonemin_word_len??????? = 1html_strip??????????????? = 0#中文分詞配置,詳情請(qǐng)查看:http://www.coreseek.cn/products-install/coreseek_mmseg/charset_dictpath =?/usr/local/mmseg3/etc/?#BSD、Linux環(huán)境下設(shè)置,/符號(hào)結(jié)尾#charset_dictpath = etc/???????????????????????????? #Windows環(huán)境下設(shè)置,/符號(hào)結(jié)尾,最好給出絕對(duì)路徑,例如:C:/usr/local/coreseek/etc/...charset_type??????? =?zh_cn.utf-8}#全局index定義indexer{mem_limit??????????? =?1024M??#內(nèi)存使用限制max_iops = 100max_iosize = 0}#searchd服務(wù)定義searchd{listen????????????????? =?? 9312read_timeout??????? = 5max_children??????? = 30max_matches??????????? = 1000seamless_rotate??????? = 0preopen_indexes??????? = 0unlink_old??????????? = 1pid_file =?/usr/local/coreseek/var/log/searchd_mysql.pid??#請(qǐng)修改為實(shí)際使用的絕對(duì)路徑,例如:/usr/local/coreseek/var/...log =/usr/local/coreseek/var/log/searchd_mysql.log????????#請(qǐng)修改為實(shí)際使用的絕對(duì)路徑,例如:/usr/local/coreseek/var/...query_log =/usr/local/coreseek/var/log/query_mysql.log?#請(qǐng)修改為實(shí)際使用的絕對(duì)路徑,例如:/usr/local/coreseek/var/...} :wq!??#保存退出cp? /usr/local/src/coreseek-3.2.14/testpack/api/sphinxapi.php? /usr/local/nginx/html/sphinxapi.php??#拷貝測(cè)試文件到web站點(diǎn)根目錄下cp? /usr/local/src/coreseek-3.2.14/testpack/api/test_coreseek.php? /usr/local/nginx/html/test_coreseek.php??#拷貝測(cè)試文件到web站點(diǎn)根目錄下cd /usr/local/nginx/html??#進(jìn)入web站點(diǎn)根目錄vi test.php??#編輯,添加以下代碼 <?php//注意文件的編碼格式需要保存為為UTF-8格式require ( "sphinxapi.php" );$cl = new SphinxClient ();$cl->SetServer ( '127.0.0.1', 9312);//以下設(shè)置用于返回?cái)?shù)組形式的結(jié)果$cl->SetArrayResult ( true );/*//ID的過(guò)濾$cl->SetIDRange(3,4);//sql_attr_uint等類(lèi)型的屬性字段,需要使用setFilter過(guò)濾,類(lèi)似SQL的WHERE group_id=2$cl->setFilter('group_id',array(2));//sql_attr_uint等類(lèi)型的屬性字段,也可以設(shè)置過(guò)濾范圍,類(lèi)似SQL的WHERE group_id2>=6 AND group_id2<=8$cl->SetFilterRange('group_id2',6,8);*///取從頭開(kāi)始的前20條數(shù)據(jù),0,20類(lèi)似SQl語(yǔ)句的LIMIT 0,20$cl->SetLimits(0,20);//在做索引時(shí),沒(méi)有進(jìn)行 sql_attr_類(lèi)型 設(shè)置的字段,可以作為“搜索字符串”,進(jìn)行全文搜索$res = $cl->Query ( '搜索字符串', "*" );??? //"*"表示在所有索引里面同時(shí)搜索,"索引名稱(chēng)(例如test或者test,test2)"則表示搜索指定的//如果需要搜索指定全文字段的內(nèi)容,可以使用擴(kuò)展匹配模式://$cl->SetMatchMode(SPH_MATCH_EXTENDED);//$res=cl->Query( '@title (測(cè)試)' , "*");//$res=cl->Query( '@title (測(cè)試) @content ('網(wǎng)絡(luò)')' , "*");echo '<pre>';print_r($res['matches']);print_r($res);print_r($cl->GetLastError());print_r($cl->GetLastWarning());echo '</pre>';?> :wq!??#保存退出/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft_mysql.conf --all --rotate??#建立索引服務(wù)/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft_mysql.conf --console??#啟動(dòng)測(cè)試模式/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft_mysql.conf???#后臺(tái)啟動(dòng)模式/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft_mysql.conf? --stop??#停止/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft_mysql.conf --all --rotate??#更新索引服務(wù)打開(kāi)瀏覽器測(cè)試:如下圖所示
http://192.168.21.127/test.php
http://192.168.21.127/test_coreseek.php
四、設(shè)置coreseek開(kāi)機(jī)自動(dòng)后臺(tái)運(yùn)行
vi /etc/rc.d/rc.local?#編輯,在最后一行添加下面的代碼/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft_mysql.conf:wq!??#保存退出vi /usr/local/coreseek/bin/build_index.sh??#添加以下更新索引腳本#!/bin/sh/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft_mysql.conf --all --rotate:wq!??#保存退出chmod +x /usr/local/coreseek/bin/build_index.sh??#添加腳本執(zhí)行權(quán)限vi /etc/crontab ? ?#編輯,在最后一行添加以下代碼*/30 * * * * root /usr/local/coreseek/bin/build_index.sh??#每隔30分鐘執(zhí)行一次:wq!??#保存退出service crond reload??#重新加載任務(wù)計(jì)劃至此,Linux下PHP+MySQL+CoreSeek中文檢索引擎配置完成。
總結(jié)
以上是生活随笔為你收集整理的Linux下PHP+MySQL+CoreSeek中文检索引擎配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux中的fork方法(python
- 下一篇: 第一百一十八期:运行 JavaScrip