0

我有 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 排序。

谢谢

4

2 回答 2

0

狮身人面像文档

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

您可以使用 start 和 end 修饰符来获得确切的结果。将此与报价一起使用。

"^car$"

希望这会有所帮助!

于 2012-10-23T11:29:52.583 回答
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_"

与“大车”不匹配

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

于 2012-10-24T11:42:14.283 回答