Php mySQL向搜索功能添加功能

Php mySQL向搜索功能添加功能,php,mysql,search,Php,Mysql,Search,这个mySQL查询在wordpress数据库中搜索条目,查找标题中的相似之处 SELECT ID, post_name, post_title, post_date FROM wp_posts WHERE wp_posts.post_type = 'post' AND wp_posts.post_status = 'publish' AND wp_posts.post_title LIKE '%$my_text%' ORDER BY wp_posts.post_date DESC 我已经

这个mySQL查询在wordpress数据库中搜索条目,查找标题中的相似之处

SELECT ID, post_name, post_title, post_date 
FROM wp_posts 

WHERE wp_posts.post_type = 'post' AND wp_posts.post_status = 'publish' AND wp_posts.post_title LIKE '%$my_text%' ORDER BY wp_posts.post_date DESC
我已经将它扩展到包括标签

SELECT ID, post_name, post_title, post_date 
FROM wp_posts 
LEFT JOIN wp_term_relationships 
ON        object_id = wp_posts.id
LEFT JOIN wp_terms 
ON        term_id = wp_term_relationships.term_taxonomy_id

WHERE wp_posts.post_type = 'post' AND wp_posts.post_status = 'publish' AND wp_posts.post_title LIKE '%$my_text%'

OR wp_posts.post_type = 'post' AND wp_posts.post_status = 'publish' AND wp_terms.name LIKE '%$my_text%'

这同样有效,但它增加了查询可以获取帖子的次数。例如,如果我们键入一个只出现在标题中的搜索词,但标签表中有四个不相关标签的相同帖子ID,那么它会从标题相似性中获取帖子四倍而不是一倍。显然,这个查询需要一些调整,但我对mySQL非常陌生,需要帮助。

这里有一个关于UNION selects的有用链接:

您可能需要UNION子句。
...  WHERE 
wp_posts.post_type = 'post' AND wp_posts.post_status = 'publish' 
AND (wp_posts.post_title LIKE '%$my_text%' OR wp_terms.name LIKE '%$my_text%')