Note: Sphinx’s incremental index is actually implemented through two indexes (the main index is updated every morning, and the incremental index is generated every 5 minutes). It is said on the Internet that it can be merged into one index through index merge, but I tried it. Try not to actually merge it in
sphinx incremental index setting
The existing data in the database is very large, and new data is constantly being added to the database, and I hope it can be retrieved. Full re-indexing is expensive because the data we need to update is relatively small.
For example. There were millions of original data, but only a few thousand new ones. In this way, the "main index + incremental index" mode can be used to achieve near real-time update functionality.
This
The basic principle of implementing this mode is to set up two data sources and two indexes, and establish a main index for those data that are basically not updated, and for those that are new
Create incremental indexes for incremental data. The update frequency of the main index can be set longer (for example, set at midnight every day), while the update frequency of the incremental index can be set very short (a few minutes or so).
Right), so that when the user searches, we can query the data of these two indexes at the same time.
There is a simple implementation using the "main index + incremental index" method. Add a counting table in the database to record the last data ID of the indexed table each time the main index is rebuilt, so that only the incremental index can be used. You only need to index the data after this ID, and update this table every time the main index is rebuilt.
Test conditions: Take the default sphinx.conf configuration as an example, and the database table data as example.sql.
1. Create related tables
創(chuàng)建主索引表 CREATE TABLE `sph_test1` ( `id` int(10) unsigned NOT NULL, `weight` int(11) NOT NULL, `query` varchar(3072) CHARACTER SET latin1 NOT NULL, `group_id` int(11) DEFAULT NULL, KEY `query` (`query`) ) ENGINE=SPHINX DEFAULT CHARSET=utf8 CONNECTION='sphinx://127.0.0.1:9312/test1' 創(chuàng)建索引計數(shù)表 CREATE TABLE `sph_counter` ( `id` int(11) NOT NULL, `max_doc_id` int(11) NOT NULL, PRIMARY KEY (`id`) ) 創(chuàng)建增量索引表 CREATE TABLE `sph_delta_test1` ( `id` int(10) unsigned NOT NULL, `weight` int(11) NOT NULL, `query` varchar(3072) NOT NULL, `group_id` int(11) DEFAULT NULL, KEY `query` (`query`(1024)) ) ENGINE=SPHINX DEFAULT CHARSET=utf8 CONNECTION='sphinx://127.0.0.1:9312/delta_test1'
2. Modify sphinx.conf
source src1{ type = mysql sql_host = localhost sql_user = yourusername sql_pass = yourpassword sql_db = test //你所用的數(shù)據(jù)庫 sql_port = 3306 //所用端口,默認是3306 sql_query_pre = SET NAMES utf8 sql_query_pre = sql_query_pre = REPLACE INTO sph_counter SELECT 1, MAX(id) FROM documents sql_query = SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title,\ content FROM documents \ WHERE id<=( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 ) } // 注意:delta_src 中的sql_query_pre的個數(shù)需和main_src 對應,否則可能搜索不出相應結(jié)果 source delta_src1: src1{ sql_ranged_throttle = 100 sql_query_pre = SET NAMES utf8 sql_query_pre = SET SESSION query_cache_type=OFF sql_query = SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content FROM documents\ WHERE id>( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 ) } index test1 //主索引{ source = src1 path = /usr/local/sphinx/var/data/test1 charset_type = utf-8 #這個是支持中文必須要設置的 chinese_dictionary =/usr/local/sphinx/etc/xdict #..........其它可以默認 } index delta_test1: src1 //增量索引{ source = delta_src1 path = /usr/local/sphinx/var/data/delta_src1 }
3. Generate index by scheduled task (--rotate parameter can take effect without restarting the service index)
a. Generate full index every early morning: ./indexer test1 --rotate
b. Generate incremental index every 10 minutes: ./indexer delta_test1 --rotate

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)
