Heim > Artikel > Backend-Entwicklung > Der von coreseek hinzugefügte inkrementelle Index kann nicht wirksam werden.
In der 64-Bit-Umgebung von Windows 7 wird Version 3.2.14 win32 verwendet.
Problem: Nach dem Start des Searchd-Dienstes sind die hinzugefügten Indizes ungültig. Sie können erst nach einem Neustart des Searchd-Dienstes wirksam werden.
Hauptindex: MySQL
Inkrementierungsindex: neu
Operationsprozess:
1. Erstellen Sie den Hauptindex:
<code>indexer -c csft.conf mysql </code>
2. Starten Sie den Dienst:
<code>serachd </code>
3. Suche über PHP:
8 Ergebnisse können gefunden werden
4. Neu hinzugefügte Daten verwandter Schlüsselwörter in der Datenbank
5. Inkrementellen Index hinzufügen
indexer -c csft.conf new --rotate
6. PHP durchsuchen
Das Ergebnis sind immer noch 8 Elemente
7. Oder versuchen Sie, Indizes zusammenzuführen:
<code>indexer -c csft.conf mysql new -merge-dst-range deleted 0 0 --rotate </code>
8. PHP durchsuchen
Das Ergebnis sind immer noch 8 Elemente
9. Stellen Sie den Hauptindex wieder her:
<code>indexer -c csft.conf mysql --rotate </code>
10. PHP durchsuchen
Das Ergebnis sind immer noch 8 Elemente
11. Schließen Sie den ursprünglichen Suchdienst und starten Sie dann den Suchdienst. Das Abfrageergebnis enthält die gerade eingegebenen Daten.
(Das Seltsame ist, dass, wenn Sie den ursprünglichen Suchdienst nicht schließen Wenn Sie den Index direkt erstellen, wird der Suchdienst im Fenster gestartet, und die Suchergebnisse ändern sich, aber es sind nur zwei oder drei vorhanden. Ich weiß nicht, warum
Konfigurationsdatei:
<code>#MySQL数据源配置,详情请查看:http://www.coreseek.cn/products-install/mysql/ #请先将var/test/documents.sql导入数据库,并配置好以下的MySQL用户密码数据库 #源定义 source mysql { type = mysql sql_host = localhost sql_user = root sql_pass = root sql_db = mall sql_port = 3306 sql_query_pre = SET NAMES utf8 #插入文章表的最大id sql_query_pre = REPLACE INTO acticle_new SELECT 1, MAX(id) FROM acticle sql_query = SELECT id, title,content FROM acticle #sql_query第一列id需为整数 #title、content作为字符串/文本字段,被全文索引 #sql_attr_uint = group_id #从SQL读取到的值必须为整数 #sql_attr_timestamp = date_added #从SQL读取到的值必须为整数,作为时间属性 sql_query_info_pre = SET NAMES utf8 #命令行查询时,设置正确的字符集 sql_query_info = SELECT * FROM acticle WHERE id=$id #命令行查询时,从数据库读取原始数据信息 } #增量数据源 source new:mysql { sql_query_pre = SET NAMES utf8 sql_query=select id,title,content from acticle where id>(select newid from acticle_new where id=1); sql_query_post = REPLACE INTO acticle_new SELECT 1, MAX(id) FROM acticle sql_query_post_index = REPLACE INTO acticle_new SELECT 1, MAX(id) FROM acticle } #index 主索引定义 index mysql { source = mysql #对应的source名称 path = E:/coreseek/var/data/mysql #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/... docinfo = extern mlock = 0 morphology = none min_word_len = 1 //最小索引词长度,设置后无效,原因不明 html_strip = 0 #中文分词配置,详情请查看:http://www.coreseek.cn/products-install/coreseek_mmseg/ #charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux环境下设置,/符号结尾 charset_dictpath = E:/coreseek/etc/ #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/... charset_type = zh_cn.utf-8 } #增量索引 index new:mysql { type=rt source = new #对应的source名称 path = E:/coreseek/var/data/new #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/... docinfo = extern mlock = 0 morphology = none min_word_len = 1 //最小索引词长度 html_strip = 0 #中文分词配置,详情请查看:http://www.coreseek.cn/products-install/coreseek_mmseg/ #charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux环境下设置,/符号结尾 charset_dictpath = E:/coreseek/etc/ #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/... charset_type = zh_cn.utf-8 } #全局index定义 indexer { mem_limit = 128M } #searchd服务定义 searchd { listen = 9312 read_timeout = 5 max_children = 30 max_matches = 1000 seamless_rotate = 0 preopen_indexes = 0 unlink_old = 1 pid_file = E:/coreseek/var/log/searchd_mysql.pid #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/... log = E:/coreseek/var/log/searchd_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/... query_log = E:/coreseek/var/log/query_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/... }</code>Antwortinhalt:
Problem: Nach dem Start des Searchd-Dienstes sind die hinzugefügten Indizes ungültig. Sie können erst nach einem Neustart des Searchd-Dienstes wirksam werden.
Hauptindex: MySQL
Inkrementierungsindex: neu
Operationsprozess: 1. Erstellen Sie den Hauptindex:
<code>indexer -c csft.conf mysql </code>2. Starten Sie den Dienst:
<code>serachd </code>3. Suche über PHP:
8 Ergebnisse können gefunden werden
5. Inkrementellen Index hinzufügen
indexer -c csft.conf new --rotate
Das Ergebnis sind immer noch 8 Elemente
<code>indexer -c csft.conf mysql new -merge-dst-range deleted 0 0 --rotate </code>
8. PHP durchsuchen
Das Ergebnis sind immer noch 8 Elemente
<code>indexer -c csft.conf mysql --rotate </code>10. PHP durchsuchen
Das Ergebnis sind immer noch 8 Elemente
(Das Seltsame ist, dass, wenn Sie den ursprünglichen Suchdienst nicht schließen Wenn Sie den Index direkt erstellen, wird der Suchdienst im Fenster gestartet, und die Suchergebnisse ändern sich, aber es sind nur zwei oder drei vorhanden. Ich weiß nicht, warum
<code>#MySQL数据源配置,详情请查看:http://www.coreseek.cn/products-install/mysql/ #请先将var/test/documents.sql导入数据库,并配置好以下的MySQL用户密码数据库 #源定义 source mysql { type = mysql sql_host = localhost sql_user = root sql_pass = root sql_db = mall sql_port = 3306 sql_query_pre = SET NAMES utf8 #插入文章表的最大id sql_query_pre = REPLACE INTO acticle_new SELECT 1, MAX(id) FROM acticle sql_query = SELECT id, title,content FROM acticle #sql_query第一列id需为整数 #title、content作为字符串/文本字段,被全文索引 #sql_attr_uint = group_id #从SQL读取到的值必须为整数 #sql_attr_timestamp = date_added #从SQL读取到的值必须为整数,作为时间属性 sql_query_info_pre = SET NAMES utf8 #命令行查询时,设置正确的字符集 sql_query_info = SELECT * FROM acticle WHERE id=$id #命令行查询时,从数据库读取原始数据信息 } #增量数据源 source new:mysql { sql_query_pre = SET NAMES utf8 sql_query=select id,title,content from acticle where id>(select newid from acticle_new where id=1); sql_query_post = REPLACE INTO acticle_new SELECT 1, MAX(id) FROM acticle sql_query_post_index = REPLACE INTO acticle_new SELECT 1, MAX(id) FROM acticle } #index 主索引定义 index mysql { source = mysql #对应的source名称 path = E:/coreseek/var/data/mysql #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/... docinfo = extern mlock = 0 morphology = none min_word_len = 1 //最小索引词长度,设置后无效,原因不明 html_strip = 0 #中文分词配置,详情请查看:http://www.coreseek.cn/products-install/coreseek_mmseg/ #charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux环境下设置,/符号结尾 charset_dictpath = E:/coreseek/etc/ #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/... charset_type = zh_cn.utf-8 } #增量索引 index new:mysql { type=rt source = new #对应的source名称 path = E:/coreseek/var/data/new #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/... docinfo = extern mlock = 0 morphology = none min_word_len = 1 //最小索引词长度 html_strip = 0 #中文分词配置,详情请查看:http://www.coreseek.cn/products-install/coreseek_mmseg/ #charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux环境下设置,/符号结尾 charset_dictpath = E:/coreseek/etc/ #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/... charset_type = zh_cn.utf-8 } #全局index定义 indexer { mem_limit = 128M } #searchd服务定义 searchd { listen = 9312 read_timeout = 5 max_children = 30 max_matches = 1000 seamless_rotate = 0 preopen_indexes = 0 unlink_old = 1 pid_file = E:/coreseek/var/log/searchd_mysql.pid #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/... log = E:/coreseek/var/log/searchd_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/... query_log = E:/coreseek/var/log/query_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/... }</code>