Sphinx增量索引实例
在实际应用中往往有这么一种情况,数据库数据很大,比如我们的歌曲表,如果我们每次都去更新整个表的索引,对系统得开销将非常大,显然这是不合适,这时我 们会发现,每天我们需要更新的数据相比较而言较少,在这种情况下我们就需要使用“主索引+增量索引”的模式来实现实时更新的功能。
这个模式实现的基本原理是设置两个数据源和两个索引,为那些基本不更新的数据建立主索引,而对于那些新增的数据建立增量索引。主索引的更新频率我们 可以设置的长一些(可以设置在每天的午夜进行更新),而增量索引的更新频率,我们可以将时间设置的很短(几分钟左右),这样在用户搜索的时候,我们可以同 时查询这两个索引的数据。
下面,我们通过一个简单的例子来描述一下怎样实现这种模式
以sphinx.conf中默认的数据为例:
1.先在mysql中插入一个计数表和两个索引表
- CREATETABLEsph_counter(
- counter_idINTEGERPRIMARYKEYNOTNULL,
- max_doc_idINTEGERNOTNULL
- );
//主索引使用(确认之前是否已经建立过该表,如果已经建立,这里就不需要重新建了)
- CREATETABLE
sphinx( idint(11)NOTNULL,weightint(11)NOTNULL,queryvarchar(255)NOTNULL,CATALOGIDINTNOTNULL,EDITUSERIDINTNOTNULL,HITSINTNULL,ADDTIMEINTNOTNULL, KEYQuery(Query)- )ENGINE=SPHINXDEFAULTCHARSET=utf8CONNECTION=‘sphinx://localhost:3312/test1‘
//增量索引使用
CREATE TABLE
sphinx1(idint(11) NOT NULL,weightint(11) NOT NULL,queryvarchar(255) NOT NULL,CATALOGIDINT NOT NULL,EDITUSERIDINT NOT NULL,HITSINT NULL,ADDTIMEINT NOT NULL, KEYQuery(Query))ENGINE=SPHINX DEFAULT CHARSET=utf8 CONNECTION=’sphinx://localhost:3312/ test1stemmed ‘
2.修改sphinx.conf
source src1
{
sql_query_pre = SET NAMES utf8
By admin
read more



































