使用 Yii 和 PHP 在 Spinx 搜索中按字段排序
Order by field in Spinx search with Yii and PHP
你好,我是 Sphinx 搜索的新手。我想获取按 first_name 排序的所有行,但没有发生。这是我的源文件:
return
"source instructorSourse: _CONNECT_NAME_
{
sql_range_step = 1000
sql_query = SELECT id, first_name, last_name, country_id, city_id, is_banned, is_deleted, is_confirmed, dive_level as dive_level, UNIX_TIMESTAMP(last_activity) AS last_activity \
FROM user AS u \
WHERE dive_level = 'instructor' \
ORDER BY first_name DESC
sql_attr_bigint = country_id
sql_attr_bigint = city_id
sql_attr_bool = is_banned
sql_attr_bool = is_deleted
sql_attr_bool = is_confirmed
sql_attr_timestamp = last_activity
}";
但它仍然 return 行没有顺序。我做错了什么?
sql_query
只是将数据获取到索引器,无论您使用什么顺序,索引器都会重新排序以构建索引。
为了能够对 结果进行排序 ,您需要确保该列作为属性存储在索引中。 (在您的示例中,您可以按 last_activity
作为其属性对结果进行排序)
所以你需要在 属性 上设置 last_name
,sql_attr_string
可能有用,但也许 sql_field_string
更好,因为它使string
和 attribute
。
你好,我是 Sphinx 搜索的新手。我想获取按 first_name 排序的所有行,但没有发生。这是我的源文件:
return
"source instructorSourse: _CONNECT_NAME_
{
sql_range_step = 1000
sql_query = SELECT id, first_name, last_name, country_id, city_id, is_banned, is_deleted, is_confirmed, dive_level as dive_level, UNIX_TIMESTAMP(last_activity) AS last_activity \
FROM user AS u \
WHERE dive_level = 'instructor' \
ORDER BY first_name DESC
sql_attr_bigint = country_id
sql_attr_bigint = city_id
sql_attr_bool = is_banned
sql_attr_bool = is_deleted
sql_attr_bool = is_confirmed
sql_attr_timestamp = last_activity
}";
但它仍然 return 行没有顺序。我做错了什么?
sql_query
只是将数据获取到索引器,无论您使用什么顺序,索引器都会重新排序以构建索引。
为了能够对 结果进行排序 ,您需要确保该列作为属性存储在索引中。 (在您的示例中,您可以按 last_activity
作为其属性对结果进行排序)
所以你需要在 属性 上设置 last_name
,sql_attr_string
可能有用,但也许 sql_field_string
更好,因为它使string
和 attribute
。