我需要在Sphinx中进行分页/导航菜单
*(用于标志)0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
并过滤结果。
在“A”页面中 - 只是以“A”开头的结果
由于
答案 0 :(得分:1)
但如果你的意思是sphinxsearch,就像这样
sql_query = SELECT id, name, ORD(IF(ORD(name) BETWEEN 48 AND 57 OR ORD(UPPER(name)) BETWEEN 65 AND 90, UPPER(SUBSTRING(name,0,1)), '*')) AS ord, ...
sql_attr_uint = ord
会给你一个表示名字第一个字母的数字属性。可与 setFilter 一起使用,仅返回与该值匹配的结果。
甚至可以与 setGroupBy 一起使用,以获得与每个序号匹配的结果数。
-
编辑添加:使用整数属性 - 通过mysql ORD函数得到一个整数,因为attr str2ordinal(也不是字符串属性!)允许过滤。将自己转换为这样的整数允许过滤。
例如,只获得“A”结果,可以做
$cl->setFilter('ord',array(ord('A')));
这是有效的,因为php的ord函数与mysql的工作方式相同。