Heim  >  Artikel  >  Backend-Entwicklung  >  Der von coreseek hinzugefügte inkrementelle Index kann nicht wirksam werden.

Der von coreseek hinzugefügte inkrementelle Index kann nicht wirksam werden.

WBOY
WBOYOriginal
2016-08-30 09:36:411170Durchsuche

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
Der von coreseek hinzugefügte inkrementelle Index kann nicht wirksam werden.

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>

Der von coreseek hinzugefügte inkrementelle Index kann nicht wirksam werden.

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:

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

Der von coreseek hinzugefügte inkrementelle Index kann nicht wirksam werden.

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>

Der von coreseek hinzugefügte inkrementelle Index kann nicht wirksam werden.

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>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn