我使用PHP,PDO扩展和MySQL作为默认DBMS。我也有一个准备好的标签表,在我的数据库中有两个id
和tag
列。
我的目的是“从标签表中存在的字符串中自动提取匹配的标签”,我的问题是进行PDO查询来执行该操作。
例如,如果字符串是“昂贵的高质量计算机硬件”,在删除少于3个字符的单词后,如果我执行如下的查询:SELECT id FROM tags WHERE tag LIKE %Expensive%And%High%Quality%Computer%;
,文字标签如“昂贵”或“计算机” “永远不会找到!
同时执行SELECT id FROM tags WHERE tag='expensive' OR tag='and' OR tag='high' OR tag='quality' OR tag='computer' OR tag='hardware';
之类的查询也不会包含“高质量”或“昂贵的硬件”等标签。
每个字符串将执行一次此查询,在这种情况下处理时间无关紧要。
提前谢谢你,对不起我的解释感到抱歉。
答案 0 :(得分:1)
你几乎拥有它;只需在每个术语周围添加通配符:
SELECT id
FROM tags
WHERE tag='%expensive%'
OR tag='%high%'
OR tag='%quality%'
OR tag='%computer%'
OR tag='%hardware%';
请注意,我从条款中排除了“和”。你可能想检查字符串的长度,不要使用3个或更少的字符,因为“%和%”会匹配很多东西,如“沙”,“平淡”,“宏伟”等。
答案 1 :(得分:0)
我认为你可以使用类似的东西:
SELECT id FROM tags WHERE tag LIKE '%expensive%' OR tag LIKE '%and%' OR tag LIKE '%high%' OR tag LIKE '%quality%' OR tag LIKE '%computer%' OR tag LIKE '%hardware%';
在您的查询中,您将搜索范围限制为像tag ='hardware'这样的确切字词。这与昂贵的硬件不匹配。