我对狮身人面像很新,所以我有一个问题。
假设我有一个名为 tv_releases
的表格我的sphinx.conf包含(小部分):
source tv_releases
{
type = mysql
sql_host = localhost
sql_user = ---------
sql_pass = ---------
sql_db = --------
sql_port = 3306
sql_query_pre = SET NAMES utf8
#ingore for example ( delta updates ).
sql_query_pre = REPLACE INTO title_counter SELECT 3, MAX(id) FROM tv_releases
sql_query = SELECT id,rel ,tv_id,total_subs FROM tv_releases\
#ignore for example ( delta updates).
WHERE id<=( SELECT max_doc_id FROM title_counter WHERE counter_id=3 )
sql_attr_uint = total_subs
sql_attr_uint = tv_id
}
索引很好,也可以查询。
现在sphinxapi(php)(部分):
$sp = new SphinxClient();
---...
$sp->SetMatchMode(SPH_MATCH_ALL);
$sp->SetArrayResult(true);
$sp->SetLimits ( 0, 100);
$sp->SetSortMode ( SPH_SORT_EXTENDED, "@relevance DESC, ....more options" );
$results = $sp->Query('SEARCHTERM', 'tv_releases');
现在我的问题:
假设我有以下版本(在表中称为rel)。
rel 1 : Name s01e02 Format-extradata
rel 2 : Name s01e03 Format-extradata
rel 3 : Name s02e05 Format-extradata
rel 4 : Name s02e06 Format-extradata
rel 5 : Name s03e06 Format-extradata
当我的SEARCHTERM为“名称S01 ”
时我想要匹配的版本(rel)(由Relevance排序)
将从包含名称s01e **
的所有版本开始问题是,它不会这样做。 在sql中使用简单的“名称s01%”就可以了,但是狮身人面像的全部意义在于速度。
有人解决了如何在sphinx中完成所需(搜索)结果的问题吗?
干杯
答案 0 :(得分:2)
min_prefix_len(http://sphinxsearch.com/docs/current.html#conf-min-prefix-len)可以为您提供帮助。
祝福, 塞吉