Sphinx Search-可选过滤器


Sphinx Search - Optional filters

我对sphinx搜索很陌生,我的查询遇到了一些问题。

我有以下配置:

sql_attr_uint = user
sql_attr_uint = category
sql_field_string = title
sql_field_string = description

查询看起来像

$sf->setMatchMode(SPH_MATCH_ANY);
$sf->setFilter("user", array("1033"));
$sf->setFilter("category", array("9"));
$sf->setFieldWeights(array("user"=>150,"category"=>50,"title"=>75,"description"=>75));
$result = $sf->query('my test query',"test");

我想查询与任何过滤器匹配的所有行,并根据它们匹配的过滤器数量对它们进行排序,在优先级用户>标题=描述>类别上

Basicaly,我需要过滤器进行加权,而不是删除不匹配的行。

感谢

Basicaly,我需要过滤器进行加权,而不是删除不匹配的行。

虽然基本上是可能的,但困难重重。

更好的方法是将uint属性转换为全文关键字,

将sql_attr_uint更改为sql_field_string,使其成为字段(假设您也想将它们作为属性保留,如果不只是删除行并使它们默认为字段)

然后可以使用扩展语法进行过滤

$cl->setMatchMode(SPH_MATCH_EXTENDED);
$cl->Query('"my test query"/1 | (@user 1099) | (@category 9)',"test");

(这也是使用quorum语法来模拟ANY查询)