gpt4 book ai didi

search - Sphinx 搜索引擎,几个简单的问题

转载 作者:行者123 更新时间:2023-12-01 11:09:41 28 4
gpt4 key购买 nike

所以,我才刚刚开始阅读这方面的内容,我以前从未在 PHP 中实现过搜索。我想知道几个问题:

  • 听起来,Sphinx 需要一个“守护进程”,一个运行在后台,操作?
  • 假设我建立了一个 mySQL 的索引表,然后用户上传另一个记录。用于搜索显示这条记录,我必须建立指数一遍又一遍,每用户更新/创建时间记录?

谢谢。

最佳答案

基本上您需要一个基本索引,然后是一个增量索引。增量更新基础中的任何内容。因此,您可能会在凌晨 1 点运行基本索引,然后每 5 分钟更新一次增量。您将时间戳存储在表或其他数据库中,并控制哪些记录进入增量。

然后您可以查看 sql_query_killlist 以删除已删除的内容,请参阅文档。

示例 conf 可能如下所示。

source _user
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass =
sql_db = db
sql_port = 3306
sql_attr_uint = category_id
sql_attr_timestamp = time_posted
}

source user_base : _user
{
sql_query_pre = REPLACE INTO sphinx_lastrun (object_name, object_value) SELECT 'users', @max_stamp:=UNIX_TIMESTAMP(MAX(stamp))-1 FROM users
sql_query = SELECT id, category_id, name, UNIX_TIMESTAMP(stamp) AS stamp FROM users WHERE stamp < FROM_UNIXTIME(@max_stamp)
sql_query_info = SELECT id FROM users WHERE id=$id
}

source user_incr : _user
{
sql_query = SELECT id, category_id, name, UNIX_TIMESTAMP(stamp) AS stamp FROM users WHERE stamp >= (SELECT FROM_UNIXTIME(object_value) FROM sphinx_lastrun WHERE object_name = 'users')

# You'll need sql_query_killlist to get rid of stuff that is deleted. See the docs

sql_query_info = SELECT id FROM users WHERE id=$id
}

index _user
{
docinfo = extern
mlock = 0
morphology = none
min_word_len = 2
charset_type = sbcs
min_prefix_len = 3
enable_star = 1
}

index user_base : _user
{
source = user_base
path = /opt/sphinx/var/data/user_base
}

index user_incr : _user
{
source = user_incr
path = /opt/sphinx/var/data/user_incr
}

index user
{
type = distributed
local = user_base
local = user_incr
}

searchd
{
listen = 3312
log = /opt/sphinx/var/log/searchd/searchd.log
query_log = /opt/sphinx/var/log/searchd/query.log
pid_file = /opt/sphinx/var/log/searchd/searchd.pid
}

关于search - Sphinx 搜索引擎,几个简单的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1425746/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com