sphinx全文搜索引擎簡(jiǎn)單使用(Windows)

當(dāng)一個(gè)功能需要對(duì)表中的text varchar等文本進(jìn)行l(wèi)ike查詢時(shí),MySQL全表掃描很慢额嘿,需要sphinx

1.解決性能問(wèn)題

2.解決中文分詞問(wèn)題

流程:

1.PHP先把要搜索的短語(yǔ)發(fā)給sphinx服務(wù)器,sphinx服務(wù)器返回的是記錄的ID

2.PHP用sphinx返回的ID查詢數(shù)據(jù)庫(kù)

用法一:sphinxse:把sphinx集成到MSQL里去径簿,沒(méi)有單獨(dú)的sphinx服務(wù)器

PHP只需要寫(xiě)一個(gè)sql語(yǔ)句即可疲憋,不用用戶管sphinx,mysql會(huì)自己連接查詢sphinx笼呆。如果要使用這種,需要在linux下重新編譯mysql旨别,把sphinx當(dāng)成插件編譯到mysql中去诗赌。

實(shí)際操作:

1.先下載sphinx的包,我們下載的是coreseek【coreseek.cn

2:coreseek是一個(gè)加了中文的sphinx

3:下載包之后幾個(gè)重要文件說(shuō)明

實(shí)際應(yīng)用:將etc文件夾下的csft_mysql.conf秸弛,即先復(fù)制mysql的配置文件模板到根目錄下铭若,并改名為sphinx.conf

以下sql語(yǔ)句要學(xué)習(xí)下寫(xiě)的不錯(cuò)

配置文件配置好之后就可以使用這個(gè)文件生成索引了

#MySQL數(shù)據(jù)源配置,詳情請(qǐng)查看:http://www.coreseek.cn/products-install/mysql/

#請(qǐng)先將var/test/documents.sql導(dǎo)入數(shù)據(jù)庫(kù)递览,并配置好以下的MySQL用戶密碼數(shù)據(jù)庫(kù)

#源定義

#配置數(shù)據(jù)源(要生成索引的數(shù)據(jù))

#說(shuō)明:一個(gè)配置文件中可以定義多個(gè)數(shù)據(jù)源

source goods

{

type= mysql

sql_host= localhost

sql_user= rumble

sql_pass= lumingzhe

sql_db= ushopdata

sql_port= 3306

#sphinx在取數(shù)據(jù)之前執(zhí)行的sql語(yǔ)句一般是設(shè)置編碼的語(yǔ)句set names編碼

sql_query_pre= SET NAMES utf8

#一個(gè)數(shù)據(jù)源中只能有一個(gè)主查詢叼屠,這條語(yǔ)句取出的數(shù)據(jù)就是sphin將要?jiǎng)?chuàng)建全文索引的語(yǔ)句

#主查詢的要求:第一個(gè)字段必須是ID,如果名字不為ID绞铃,取個(gè)別名叫id(類型必須是非零唯一镜雨、不重復(fù)的整數(shù))

#sphinx只能對(duì)屬性字段排序,sphinx要排序的字段必須取出該字段儿捧,sphin排序必須將某個(gè)字段定義成一個(gè)屬性

sql_query= SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title,content FROM documents

#sql_query第一列id需為整數(shù)

#后面這些可以不用

#title荚坞、content作為字符串/文本字段挑宠,被全文索引

#以下是用來(lái)定義屬性:用來(lái)排序的sql_attr_uint可以定義多個(gè)比如我要對(duì)價(jià)格上架時(shí)間

#進(jìn)行排序可以這樣操作sql_attr_uint=shop_pricesql_attr_uint=add_time

sql_attr_uint= group_id#從SQL讀取到的值必須為整數(shù)

sql_attr_timestamp=date_added #從SQL讀取到的值必須為整數(shù),作為時(shí)間屬性

sql_query_info_pre= SETNAMES utf8#命令行查詢時(shí)西剥,設(shè)置正確的字符集

sql_query_info= SELECT* FROM documents WHERE id=$id #命令行查詢時(shí),從數(shù)據(jù)庫(kù)讀取原始數(shù)據(jù)信息

}

#index定義

#配置索引--》生成的索引文件

#說(shuō)明:一個(gè)數(shù)據(jù)源對(duì)應(yīng)一個(gè)索引的配置

index goods_index

{

source=goods#對(duì)應(yīng)的source名稱

#sphinx生成的索引文件存放的目錄

#注意:path中的地址的最后一個(gè)即data后面的goods是說(shuō):索引文件名叫g(shù)oods

#并不是說(shuō)goods目錄

path= D:\D_E\coreseek-4.1-win32\var\data\goods

#var/data/mysql #請(qǐng)修改為實(shí)際使用的絕對(duì)路徑亿汞,例如:/usr/local/coreseek/var/...

docinfo= extern

mlock= 0

morphology= none

#允許最短的詞

min_word_len= 1

html_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é)尾

#中文詞庫(kù)在哪中文詞庫(kù)所在的目錄

charset_dictpath =D:\D_E\coreseek-4.1-win32\etc

#Windows環(huán)境下設(shè)置咆畏,/符號(hào)結(jié)尾,最好給出絕對(duì)路徑吴裤,例如:C:/usr/local/coreseek/etc/...

charset_type= zh_cn.utf-8

}

#全局index定義

#目前sphin只支持utf8編碼

#允許使用多大的內(nèi)存創(chuàng)建索引文件(indexer.exe這個(gè)命令可以使用的內(nèi)存)

indexer

{

mem_limit= 128M

}

#searchd服務(wù)定義

searchd

{

listen=9312

read_timeout= 5

max_children= 30

#最大返回的記錄數(shù)(即使查詢出的記錄數(shù)量更多也只返回設(shè)置的數(shù))

max_matches= 1000

seamless_rotate= 0

preopen_indexes= 0

unlink_old= 1

#以下三個(gè)一定要配置旧找,不配置無(wú)法用

pid_file =D:\D_E\coreseek-4.1-win32\var\log\searchd_mysql.pid

#var/log/searchd_mysql.pid

log =D:\D_E\coreseek-4.1-win32\var\log\searchd_mysql.log

#var/log/searchd_mysql.log

query_log =D:\D_E\coreseek-4.1-win32\var\log\query_mysql.log

#var/log/query_mysql.log

#請(qǐng)修改為實(shí)際使用的絕對(duì)路徑,例如:/usr/local/coreseek/var/...

binlog_path =#關(guān)閉binlog日志

}


說(shuō)明:indexer.exe命令所在地址–c配置文件所在地址指定生成索引的數(shù)據(jù)源【比如goods】或者–all【即為所有的數(shù)據(jù)源生成索引】

4:?jiǎn)?dòng)sphinx服務(wù)器

補(bǔ)充:sphinx服務(wù)刪除

引入sphinx的api的php操作的包這下就可以對(duì)中文進(jìn)行全文索引了

Sphinx自動(dòng)更新

實(shí)際操作:

1:每次生成索引文件之后要把最后一條記錄的ID保存下來(lái)麦牺,下次ID大于這個(gè)ID的就是最新的數(shù)據(jù)钮蛛。

2:建一張表用來(lái)保存這個(gè)id

3:

4:配置sphinx讓每次生成索引之后能夠直接把最大的ID更新進(jìn)來(lái)

定期為新添加的數(shù)據(jù)生成索引

A:修改sphinx定義一個(gè)新的數(shù)據(jù)源(新插入的數(shù)據(jù)還沒(méi)有創(chuàng)建索引)

B:再添加一個(gè)index索引(每個(gè)數(shù)據(jù)源對(duì)應(yīng)一個(gè)索引文件)

C:寫(xiě)一個(gè)bat腳本,讓這個(gè)定期用新的數(shù)據(jù)源生成索引文件剖膳,并把這個(gè)索引文件合并到主索引文件上(第一次生成的索引文件)

D:配置Windows系統(tǒng)讓系統(tǒng)定期執(zhí)行這個(gè)bat腳本即可

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末魏颓,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子吱晒,更是在濱河造成了極大的恐慌甸饱,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,126評(píng)論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仑濒,死亡現(xiàn)場(chǎng)離奇詭異叹话,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)墩瞳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門(mén)驼壶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人喉酌,你說(shuō)我怎么就攤上這事辅柴。” “怎么了瞭吃?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,941評(píng)論 0 366
  • 文/不壞的土叔 我叫張陵碌嘀,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我歪架,道長(zhǎng)股冗,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,294評(píng)論 1 300
  • 正文 為了忘掉前任和蚪,我火速辦了婚禮止状,結(jié)果婚禮上烹棉,老公的妹妹穿的比我還像新娘。我一直安慰自己怯疤,他們只是感情好浆洗,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,295評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著集峦,像睡著了一般伏社。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上塔淤,一...
    開(kāi)封第一講書(shū)人閱讀 52,874評(píng)論 1 314
  • 那天摘昌,我揣著相機(jī)與錄音,去河邊找鬼高蜂。 笑死聪黎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的备恤。 我是一名探鬼主播稿饰,決...
    沈念sama閱讀 41,285評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼露泊!你這毒婦竟也來(lái)了湘纵?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,249評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤滤淳,失蹤者是張志新(化名)和其女友劉穎梧喷,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體脖咐,經(jīng)...
    沈念sama閱讀 46,760評(píng)論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡铺敌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,840評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了屁擅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片偿凭。...
    茶點(diǎn)故事閱讀 40,973評(píng)論 1 354
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖派歌,靈堂內(nèi)的尸體忽然破棺而出弯囊,到底是詐尸還是另有隱情,我是刑警寧澤胶果,帶...
    沈念sama閱讀 36,631評(píng)論 5 351
  • 正文 年R本政府宣布匾嘱,位于F島的核電站,受9級(jí)特大地震影響早抠,放射性物質(zhì)發(fā)生泄漏霎烙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,315評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望悬垃。 院中可真熱鬧游昼,春花似錦、人聲如沸尝蠕。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,797評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)看彼。三九已至廊佩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間闲昭,已是汗流浹背罐寨。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,926評(píng)論 1 275
  • 我被黑心中介騙來(lái)泰國(guó)打工靡挥, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留序矩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,431評(píng)論 3 379
  • 正文 我出身青樓跋破,卻偏偏與公主長(zhǎng)得像簸淀,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子毒返,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,982評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容