Sphinx和PHP的一些问题
情况如下: 我的数据库中有一个很大的表——3.6GB和1700行。从表中选择“限制”和“偏移”非常缓慢,通常会导致错误504。表是MyISAM,有多个索引,将被更新 这就是为什么我决定使用Sphinx来列出表的内容——在某些情况下没有查询(所有行),在某些情况下有查询——它的工作就像一个符咒。速度惊人 但问题是,如果没有查询,只返回前1000个结果。即使我用Sphinx和PHP的一些问题,php,mysql,sphinx,Php,Mysql,Sphinx,情况如下: 我的数据库中有一个很大的表——3.6GB和1700行。从表中选择“限制”和“偏移”非常缓慢,通常会导致错误504。表是MyISAM,有多个索引,将被更新 这就是为什么我决定使用Sphinx来列出表的内容——在某些情况下没有查询(所有行),在某些情况下有查询——它的工作就像一个符咒。速度惊人 但问题是,如果没有查询,只返回前1000个结果。即使我用$this->SetLimits(41,24)调用它应该返回id为从984到1008的结果,但我得到的最后一个结果是id 1000。我尝试更
$this->SetLimits(41,24)调用它
应该返回id为从984
到1008
的结果,但我得到的最后一个结果是id 1000。我尝试更改我的/etc/sphinxsearch/sphinx.conf
中的值,重新启动了服务,但没有成功。
还有,这是个好主意吗?我的意思是,它会显著降低性能吗?有什么建议吗
还有一个问题:
在我的sphinx.conf
中,我选择了要用于搜索/排序的列,它们都出现在[matches]
部分。由于我不使用它们,它们只占用内存,并且(我猜)在一定程度上降低了性能。我只在我的应用程序中使用id
。是否可以按这些列进行搜索/排序,但将其从[匹配项]
中排除
我的sphinx.conf
source test {
type = mysql
sql_host = localhost
sql_user = root
sql_pass = password
sql_db = database
sql_port = 3306
sql_query = \
SELECT id, name, UNIX_TIMESTAMP(date) as date, views, rating \
FROM table \
WHERE active = 1
sql_field_string = name
sql_attr_timestamp = date
sql_attr_uint = views
sql_attr_uint = rating
sql_query_info = SELECT * FROM table WHERE id=$id
}
index test {
source = test
path = /var/lib/sphinxsearch/data/test
docinfo = extern
charset_type = utf-8
}
searchd {
listen = 9312
log = /var/log/sphinxsearch/searchd.log
query_log = /var/log/sphinxsearch/query.log
read_timeout = 5
max_children = 30
pid_file = /var/run/sphinxsearch/searchd.pid
max_matches = 10000 # I tried changing this to 10,000 - no result
seamless_rotate = 1
preopen_indexes = 1
unlink_old = 1
binlog_path = /var/lib/sphinxsearch/data
}
这是因为还有“每查询最大匹配数”设置,默认值为1000 在sphinx.conf中,可以设置如下内容
max_matches = 10000
或者,将最大匹配项添加到查询中
$this->SetLimits(41, 24, 10000);
请注意,有两个地方强制执行最大匹配限制。
每个查询的限制由该API调用控制,但也存在
由max_控制的每服务器限制与配置文件中的设置相匹配。
为了防止RAM使用滥用,服务器将不允许设置每个查询
限制高于每服务器限制
关于第二部分,请查看
->SetSelect()
函数 如您所见,我在我的searchd
部分中有max_matches
,它被设置为10000OK,我尝试了这个,现在得到了10000个结果,但是如果我将第三个参数设置为10001,则不会返回任何结果max_matches
现在设置为100000。有没有办法走得更高?那么,它工作正常吗?这里有更多信息:。感谢您的合作。是的,效果很好!你知道如何继续我问题的第二部分吗?