coreseek,php,mysql全文檢索部署(二)
5. MySQL資料來源配置
如果是MySQL,需要設定讀取資料輸出字符集為UTF-8;請現將資料的字符集轉換為UTF-8或者至少可以輸出為UTF-8。
mysql> show variables like `character_set_%`;
+————————–+——————————————–+
| Variable_name | Value |
+————————–+——————————————–+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /var/www/dream/mysql/share/mysql/charsets/ |
+————————–+——————————————–+
root@CC-57:~# vi /usr/local/coreseek/etc/csft.conf
資料來源定義:
source main
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass = xxxx
sql_db = xxxx
sql_port = 3306
sql_query_pre = SET NAMES utf8 #命令列查詢時,設定正確的字符集,3.2.14開始支援
sql_query = select id, title, connect from tablename #sql_query第一列id需為整數
sql_query_info = SELECT * FROM documents WHERE id=$id #命令列查詢時,從資料庫讀取原始資料資訊
}
索引定義:
index main
{
source = main #對應的source名稱
path = /usr/local/coreseek/var/data/main
docinfo = extern
mlock = 0 morphology = none
min_word_len = 1
html_strip = 0
charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux環境下設定,/符號結尾
#charset_dictpath = etc/ #Windows環境下設定,/符號結尾
charset_type = zh_cn.utf-8
}
重新建立索引:
root@CC-57:~# /usr/local/coreseek/bin/indexer –all
搜尋測試:可以支援中文檢索
root@CC-57:~# /usr/local/coreseek/bin/search 籃球
words:
1. `籃球`: 1250 documents, 1272 hits
6. coreseek實時索引配置
資料庫中的資料很大,然後我有些新的資料後來加入到資料庫中,也希望能夠檢索到,全部重新建立索引很消耗資源,這樣需要用到主索引+增量索引的思路來解決,這個思路實現的主要原理就是設定倆個資料來源和倆個索引。
a.建立一個索引器
一個簡單的實現是,在資料庫中增加一個計數表,記錄將文件集分為倆個部分的文件ID,每次重新構建主索引時,更新這個表
先在mysql中插入一個計數表:
mysql> create table sph_counter(counter_id int unsigned auto_increment primary key,max_doc_id int);
mysql> desc sph_counter;
+————+——————+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+————+——————+——+—–+———+—————-+
| counter_id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| max_doc_id | int(11) | YES | | NULL | |
+————+——————+——+—–+———+—————-+
2 rows in set (0.00 sec)
b. 再次修改配置檔案
主資料來源,繼承主資料來源,主索引,繼承索引(繼承索引也就是增量索引)
主資料來源裡面,需要把欲查詢語句改成下面的語句
root@CC-57:~# vi /usr/local/coreseek/etc/csft.conf
source main {
把sql_query_pre的語句改成下面的
sql_query_pre = replace into sph_counter select 1,max(id) from tablename
把sql_query 的語句改成下面的
sql_query = select id, title, connect from tablename
where id <=(select max_doc_id from sph_counter where counter_id=1)
}
繼承主資料來源
source delta : main {
sql_query_pre = SET NAMES utf8
sql_qurey = select id, title, connect from tablename
where id >(select max_doc_id from sph_counter where counter_id=1)
}
繼承索引
index delta : main
{
source = delta
path = /usr/local/coreseek/var/data/delta
# morphology = stem_en
}
剩下的基本不變
注意:主source 的select 項要與繼承source的select 項匹配,否則合併時會出錯
source main: select id, title, connect from tablename
source detal: select id, title, connect from tablename
c. 測試主索引+增量索引
如果想測試增量索引是否成功,往資料庫表中插入資料,查詢是否能夠檢索到,這個時候應該為空,然後再重新單獨建立增量 索引
/usr/local/coreseek/bin/indexer detal
檢視是否將新的記錄進行了索引,如果成功
此時,再用/usr/local/coreseek/bin/search 工具來檢索,能夠看到在主索引中檢索到的結果為0,而在增量索引中檢索到結果,當然前提條件是檢索的詞只在後新增的資料中存在
d. 實時更新索引
需要建立來個指令碼,還要用到計劃任務
main.sh delta.sh
在增量索引中寫下 delta.sh
vi /usr/local/coreseek/etc/delta.sh
#!/bin/bash
/usr/local/coreseek/bin/indexer delta –rotate >> /usr/local/coreseek/var/log/delta.log
在主索引中寫下 main.sh
vi /usr/local/coreseek/etc/main.sh
#!/bin/bash
/usr/local/coreseek/bin/indexer main –rotate >> /usr/local/coreseek/var/log/merge.log
chmod a+x /usr/local/coreseek/etc/delta.sh
chmod a+x /usr/local/coreseek/etc/main.sh
最後,需要指令碼自動執行,實現5分鐘建立增量索引 ,每天定時執行一次主索引
crontab -e
*/5 * * * * /usr/local/coreseek/etc/delta.sh
30 2 * * * /usr/local/coreseek/etc/main.sh
本文轉自ljl_19880709 51CTO部落格,原文連結:http://blog.51cto.com/luojianlong/1345682,如需轉載請自行聯絡原作者
相關文章
- coreseek,php,mysql全文檢索部署(一)PHPMySql
- Linux Sphinx/Coreseek安裝 Mysql全文檢索LinuxMySql
- lnmp+coreseek實現站內全文檢索(安裝篇)LNMP
- php + MongoDB + Sphinx 實現全文檢索PHPMongoDB
- Oracle全文檢索Oracle
- PHP+redis實現超迷你全文檢索PHPRedis
- 全文檢索庫 bluge
- Lucene可以對MYSQL進行全文檢索嗎?MySql
- Kibana 全文檢索操作
- solr全文檢索學習Solr
- Oracle全文檢索之中文Oracle
- 基於ElasticSearch實現商品的全文檢索檢索Elasticsearch
- Mysql 如何實現全文檢索,關鍵詞跑分MySql
- elasticsearch的實現全文檢索Elasticsearch
- Oracle全文檢索之Ctxcat 索引Oracle索引
- Oracle全文檢索之ContextOracleContext
- 請問全文檢索的思路?
- oracle全文索引之配置全文檢索環境Oracle索引
- 沒辦法了,用 MySQL 做全文檢索也挺好的MySql
- Oracle的全文檢索技術(轉)Oracle
- 全文檢索技術lucene的demo
- 全文檢索的基本原理
- PostgreSQL全文檢索-詞頻統計SQL
- 手工建立oracle text全文檢索元件Oracle元件
- openGauss每日一練(全文檢索)
- 基於Lucene的全文檢索實踐
- ElasticSearch 實現分詞全文檢索 - 概述Elasticsearch分詞
- 全文字檢索的應用(2)(轉)
- 全文字檢索的應用(1)(轉)
- IM全文檢索技術專題(四):微信iOS端的最新全文檢索技術優化實踐iOS優化
- coreseek實戰(三):全文搜尋在php中應用(使用api介面)PHPAPI
- 【IT老齊072】全文檢索執行原理
- coreseek 實現中文全文索引 記錄索引
- springboot ElasticSearch 簡單的全文檢索高亮Spring BootElasticsearch
- ElasticSearch 實現分詞全文檢索 - delete-by-queryElasticsearch分詞delete
- RDSforMySQL全文檢索相關問題的處理ORMMySql
- MySQL單表檢索MySql
- 擊敗二分檢索演算法——插值檢索、快速檢索演算法