我目前正在使用Sphinx索引一个具有2000万以上记录的MySQL查询。狮身人面像主/三角洲索引,sql_query_killlist
我正在使用增量索引来更新主索引并添加所有新记录。
不幸的是,对表格所做的更改将被删除。
我知道我可以使用sql_query_killlist来获取需要删除或更新的所有文档ID。不幸的是,我不明白这是如何实际工作的,Sphinx的文档没有足够的例子让我理解。
如果我使用下面的例子,我该如何实现kilist?
在MySQLCREATE TABLE sph_counter
(
counter_id INTEGER PRIMARY KEY NOT NULL,
max_doc_id INTEGER NOT NULL
);
sphinx.conf中
source main
{
# ...
sql_query_pre = SET NAMES utf8
sql_query_pre = REPLACE INTO sph_counter SELECT 1, MAX(id) FROM documents
sql_query = SELECT id, title, body FROM documents \
WHERE id<=(SELECT max_doc_id FROM sph_counter WHERE counter_id=1)
}
source delta : main
{
sql_query_pre = SET NAMES utf8
sql_query = SELECT id, title, body FROM documents \
WHERE id>(SELECT max_doc_id FROM sph_counter WHERE counter_id=1)
}
指数主要
{
source = main
path = /path/to/main
# ... all the other settings
}
记下所有其他设置如何从主, 复制,但源和路径覆盖(他们必须是) 指数delta:主要
{
source = delta
path = /path/to/delta
}
您是否有列可以捕获文档表上的更新和删除?没有它,这个kilist将难以实施。 – Imraan 2012-08-11 04:04:51