php - 根据字符串相关性和字符串顺序在数据库中搜索字符串

标签 php mysql

我有一个 SQL 搜索语句的示例,其中我尝试按顺序查找字符串部分,相关性优先。所以它首先搜索“一二三”的完整字符串,然后继续搜索“一二”,然后是“二三”,最后一直搜索到一个单词,但它从不向后搜索。只有秩序。因此,例如,它永远不会搜索“三二一”,只会搜索“一二三”,我想知道是否可以将所有这些单个查询语句组合成一个查询?谢谢。

$text1 = "one";
$text2 = "two";
$text3 = "three";

SELECT text FROM tableName WHERE text LIKE "$text1 $text2 $text3"  
SELECT text FROM tableName WHERE text LIKE "$text1 $text2"
SELECT text FROM tableName WHERE text LIKE "$text2 $text3"
SELECT text FROM tableName WHERE text LIKE "$text1" 
SELECT text FROM tableName WHERE text LIKE "$text2" 
SELECT text FROM tableName WHERE text LIKE "$text3"  

最佳答案

是的。您可以搜索它们,然后按相关性排序。这是一种方法:

SELECT text
FROM tableName
WHERE text LIKE "$text1" OR
      text LIKE "$text2" OR
      text LIKE "$text3" 
ORDER BY (text LIKE "$text1 $text2 $text3") DESC,
         (text LIKE "$text1 $text2") DESC,
         (text LIKE "$text2 $text3") DESC,
         (text LIKE "$text1" ) DESC,
         (text LIKE "$text2" ) DESC,
         (text LIKE "$text3" ) DESC

关于php - 根据字符串相关性和字符串顺序在数据库中搜索字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32598291/

相关文章:

php - WordPress,禁用部分 Roots 主题(如 Bootstrap)

mysql - Envers revinfo 表为空,但 _aud 表正常 - Spring Boot

mysql - 合并两个查询

mysql - Spring 启动: MySQL Duplicate key error when trying to map customers to items

mysql - Laravel 迁移无法添加外键

java - 无法按列顺序插入值

php - 使用 php 和 mysql 的产品网站

php - 如何让 Eloquent 将子集合推送到其父集合中?

php - 将 JSON 插入 MySQL。

php - MySQL COUNT 和 List 10 查询