狮身人面像按标签搜索顺序

时间:2012-10-23 11:26:02

标签: php mysql search sphinx

我有2张桌子

Table 1: Profiles table: p_id, p_title, p_presentation, p_date

Table 2: Tags table: tag_id, profile_id, tag_text

我想检查标签以匹配搜索:

例: 标签:汽车;红车;大车

当我搜索“汽车”时,我想要完全匹配。我不在乎“红色汽车”的标签。

其他我需要正常搜索(例如SPH_MATCH_EXTENDED2)。

所以我想显示带有完全标签的配置文件(比方说20个配置文件结果),然后显示下一个结果,例如按p_date排序。

由于

2 个答案:

答案 0 :(得分:0)

来自Sphinx docs

例如,查询“^ hello world $”(带引号,因此组合短语运算符和开始/结束修饰符)将仅匹配包含至少一个具有这两个关键字的字段的文档。

您可以使用开始和结束修饰符来获得准确的结果。请使用引号。

"^car$"

希望这会有所帮助!

答案 1 :(得分:0)

我是怎么做的......

sql_query = SELECT p_id, p_title, ..., \
            GROUP_CONCAT(tag_id) AS tag_ids, \
            CONCAT('_SEP_ ',GROUP_CONCAT(tag_text SEPERATOR ' _SEP_ '),' _SEP_') AS tag_text \
            FROM Profiles LEFT JOIN Tags ON (profile_id=p_id)
sql_attr_multi = uint tag_ids from field;

然后您可以使用短语操作符来搜索确切的标签,例如

"_SEP_ car _SEP_"

哪个不匹配"大车"

字段开始/结束修饰符不起作用,因为每个文档可以有多个标记。