我正在Wordpress数据库中进行通配符搜索查询以查找"文章标题"。
我的结果会有所不同:
- "职务-1"
- "文章标题2"
- "文章标题#3"
- "在文章标题1之后"
- "在文章标题1之前"
- "在文章标题2之后"
- "在文章标题2之前"
我想将我的通配符结果限制为:
- "职务-1"
- "文章标题2"
- "文章标题#3"
有什么想法或算法可以实现吗?
代码
$query = "SELECT ID, `post_title` FROM `wp_posts` WHERE `post_title` LIKE '%".$titleRequest."%'";
$results = $wpdb->get_results($query);
这样修改查询:
$query = "SELECT ID, `post_title` FROM `wp_posts` WHERE `post_title` LIKE '".$titleRequest."%'";
$results = $wpdb->get_results($query);
最初的%
的意思是"匹配这里的任何内容",但您不想这样做,您只想匹配以请求的标题开头的内容。第二个%
是可以的——毕竟,您确实希望匹配Post Title之后的内容。
在SQL
查询中的WHERE
子句中尝试此操作:
WHERE FieldName LIKE 'Post Title%';
您需要在搜索中实现模糊逻辑。但这是一个非常复杂的算法,幸运的是已经有一些插件实现了这个算法,比如"Relevassi"。一旦安装,它将覆盖您当前的搜索机制并添加自己的机制,然后您可以相应地对其进行修改。