0

我需要在 Sphinx 中做一个分页/导航菜单

*(用于标志) 0 1 2 3 4 5 6 7 8 9 ABCDEFGHIJKLMNOPQRSTU VWXYZ

并过滤结果。

在“A”页面中 - 仅以“A”开头的结果

谢谢

4

1 回答 1

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一起使用以获取与每个序数匹配的结果数。

参考:http ://www.asciitable.com/

--

编辑添加:使用整数属性 - 通过 mysql ORD 函数获得整数,因为 attr str2ordinal (也不是字符串属性!)允许过滤。像这样将自己转换为整数允许过滤。

例如,只得到“A”的结果,可以做

$cl->setFilter('ord',array(ord('A'))); 

这是因为 php 的 ord 函数的工作方式与 mysql 相同。

于 2012-10-15T13:23:47.707 回答