相關命令及步驟
建立主索引:
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf --all
建立增量索引:
1. 建立測試資料表以及資料
2. 修改配置檔案
主索引源:sql_query_pre
增量索引源:sql_query_pre sql_query sql_query_post
主索引:source path
增量索引:source path
3. 建立/更新主索引
4. 建立/更新增量索引
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf delta
5.重啟索引程序
/usr/local/coreseek/bin/searchd --stop
/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft.conf
索引合併
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf --merge main delta --rotate
csft.conf
配置檔案
source src1
index test1
source delta : src1
index delta : test1
建立mysql測試資料表及資料
create
table
`documents` (`id`
int(11) not
null auto_increment,`group_id`
int(11) not
null,`group_id2`
int(11) not
null,`date_added` datetime not
null,`title`
varchar(255) not
null,`content` text not
null,primary
key (`id`)) engine=innodb auto_increment=5;
insert
into
`documents`
values ('1', '1', '5', '2008-09-13 21:37:47', 'test one', 'this is my test document number one.also checking search within phrases.');
insert
into
`documents`
values ('2', '1', '6', '2008-09-13 21:37:47', 'test two', 'this is my test document number two');
insert
into
`documents`
values ('3', '2', '7', '2008-09-13 21:37:47', 'another doc', 'this is another group');
insert
into
`documents`
values ('4', '2', '8', '2008-09-13 21:37:47', 'doc number four', 'this is to test groups');
// 實現增量索引時使用的計數表
create
table sph_counter( counter_id integer
primary
keynot
null,max_doc_id integer
notnull);
php使用
<?php
header("content-type: text/html; charset=utf-8");
require_once('sphinxapi.php');
$s = new sphinxclient();
$s->setserver("127.0.0.1", 9312);
$s->setarrayresult(true);
$s->setmatchmode(sph_match_all);
$keyword = 'test';
$result = $s->query($keyword, '*');
if ($result['total'] == 0)
// 獲取結果id集
$ids = array();
foreach($result['matches'] as
$key => $val)
print_r($ids);
// 連線資料庫
$dsn = "mysql:host=localhost;dbname=test;charset=utf8";
$db = new pdo($dsn, 'root', '');
$sql = 'select * from documents where id in('.implode(',', $ids).')';
$result = $db->query($sql);
$result->setfetchmode(pdo::fetch_assoc);
$data = $result->fetchall();
// 搜尋結果高亮顯示
$rule = array(
"before_match" => "",
"after_match" => ""
);foreach ($data
as$key=>$val)
print_r($data);
新增新分詞
1. 複製unigram.txt檔案為unigram_new.txt
2. 在unigram_new.txt中新增新詞
3. 生成新的詞典檔案:/usr/local/mmseg3/bin/mmseg -u /usr/local/mmseg3/etc/unigram_new.txt
4. 替換原有的uni.lib檔案
5. 重建索引 && 重啟索引
sphinx主索引和增量索引實時更新
在資料庫資料非常龐大的時候,而且實時有新的資料插入,如果我們不更新索引,新的資料就search不到,全部重新建立索引又很消耗資源,在這種情況下我們就需要使用 主索引 增量索引 的思路來實現實時更新的功能。因為這時我們有了主索引和增量索引,主索引只需在每天凌晨更新,而增量索引的更新頻率設定的很短,這樣...
sphinx增量索引
在sphinx libmmseg搭建中文全文搜尋引擎 安裝配置中安裝試驗了sphinx的使用,但是還有幾方面的問題有待處理。用來建立索引的分詞資料 動態增量索引更新 索引在前端的介面的表現使用 本篇主要是對動態增量更新的一些研究。關於分詞資料的建立和前端介面的控制將在以後研究。在利用 sphinx ...
Sphinx增量索引
sphinx建立索引之後,如果我們的資料庫又增加了一條資料,需要重新建立索引。但是如果資料量十分龐大時,每次都重新建立索引顯然是不合適的。我們希望實現的效果是,每次都只建立新增的資料的索引。假設現在資料庫中有三條資料,id分別為1,2,3。使用indexer命令為這三條資料建立索引,並把max do...