通配符SQL查询-缩小搜索结果


Wildcard SQL Query - Narrowing Search Results

我正在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"。一旦安装,它将覆盖您当前的搜索机制并添加自己的机制,然后您可以相应地对其进行修改。