Sphinxql – 在PHP中使用Sphinxql时如何使用具有顺序的查询,而不
我一直在使用
mysql FTS,但最近切换到sphinx进行测试.
在centos 7上安装狮身人面像 Linux production 3.10.0-123.8.1.el7.x86_64 #1 GNU/Linux 的sphinx.conf source content_src1 { type = mysql sql_host = localhost sql_user = sql_pass = sql_db = t_prod2 sql_port = 3306 # optional,default is 3306 sql_query = SELECT content.record_num, content.title, content.category, content.upload_date, content.comments_count, content.verified, content.uploader, content.size FROM content WHERE enabled = 1 sql_attr_uint = record_num sql_attr_string = title } index content_index1 { source = content_src1 path = /var/lib/sphinx/content_index1 morphology = stem_en min_word_len = 1 min_prefix_len = 0 min_infix_len = 1 docinfo = extern } 我正在使用php连接sphinxql并运行查询,像这样 $sphinxql = @mysqli_connect($sphinxql_host.':'.$sphinxql_port,'',''); $sphinxql_query = "SELECT id FROM $sphinx_index WHERE MATCH('".mysqli_real_escape_string($prod1,$q)."') LIMIT $from,$max_results"; 简单的查询工作正常,即没有按条件排序的查询. 即 SELECT id FROM $sphinx_index WHERE MATCH('".mysqli_real_escape_string($prod1,$q)."') ORDER BY title DESC LIMIT $from,$max_results index content_index1: sort-by attribute 'title' not found 另一个尝试,我用@field名称替换字段名称 SELECT id FROM $sphinx_index WHERE MATCH('".mysqli_real_escape_string($prod1,$q)."') ORDER BY @title DESC LIMIT $from,$max_results sphinxql: syntax error,unexpected USERVAR,expecting IDENT (or 55 other tokens) near '@title DESC LIMIT 0,25' 表格按照标题,类别,upload_date,大小,验证等字段排序 那么我怎么可以在我的sphinxql查询中使用顺序 更新1 我已经设法运行查询“没有顺序”,但是具有“order by”的查询不能正常工作,没有给出错误,给出结果集,但是如果我改变按属性排序的方向,结果集不会改变. 更新的字段和属性如下. sql_field_string = title sql_field_string = og_name sql_field_string = hash sql_field_string = keywords sql_attr_timestamp = upload_date_timestamp sql_attr_uint = category sql_attr_uint = comments_count sql_attr_bool = verified sql_attr_bigint = size
你试过使用该列作为sql_attr_string吗?
http://sphinxsearch.com/docs/current.html#conf-sql-attr-string 您至少需要版本2.0.1才能在此类属性上使用ORDER BY子句:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |