q3d*_*q3d 0 php mysql tags search
我有一张桌子上有图片和标签(叫做tbl_images)
image_file image_tags
---------- ----------------------------
test.png tag1 another_tag tag2
hi.jpg tag9 tag1 another_tag qwerty
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能:
?
例如,如果它们全部出现在同一行的同一image_tags字段中,则能够使用完整标记名称进行搜索并同时搜索多个标记.注意:-
$_GET['search_terms'])LIKE '%tag9%因为tag9可能出现在一个更大的标签中,例如Atag98,正如我所说,我只想要精确的标签匹配.LIKE ' tag9 '(注意前后空间),因为tag9可能出现在image_tags字段的开头(没有空格,所以没有匹配)LIKE 'tag9 another_tag'因为我不知道另外一个标签是否在tag9之后,同样我也不能这样做LIKE 'tag9%another_tag'; tag9也可以是更大标签的一部分(如前所述).还有,全文搜索是否适用于此?如果是这样,你能提供一个例子吗?
一个棘手的问题(对我来说无论如何;)任何帮助将不胜感激.
使用图像存储标签的更好解决方案是创建一个单独的表,其中标签链接到图像.然后,您将为每个标记创建一行,例如
image_file (FK) tag
--------------- -----------
test.png tag1
test.png another_tag
test.png tag2
hi.jpg tag9
hi.jpg tag1
hi.jpg another_tag
hi.jpg qwerty
Run Code Online (Sandbox Code Playgroud)
然后,您可以只查找与图像相关的标签:
SELECT tag FROM tags WHERE image_file = 'test.png'
Run Code Online (Sandbox Code Playgroud)
或哪些图像与某个标签相关:
SELECT image_file FROM tags WHERE tag = 'tag1'
Run Code Online (Sandbox Code Playgroud)
使用此方法可以避免您在问题中描述的LIKE的所有问题.像这样规范化数据库时不需要全文搜索.