我有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排序。
由于
答案 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_"
哪个不匹配"大车"
字段开始/结束修饰符不起作用,因为每个文档可以有多个标记。