【问题标题】:Php search query exact word match with CONCATPHP搜索查询与CONCAT完全匹配
【发布时间】:2018-10-05 23:21:23
【问题描述】:

我正在尝试构建一个搜索查询,假设如果我们键入一个词干,它应该显示以词干开头的词以及之后的任何内容。现在,我的代码如下所示:

$sql = "SELECT * FROM `faculty`
    WHERE (CONCAT(`firstName`, ' ', `lastName`,`expertise`,`affiliation`)
    LIKE '%$textSearch%') ORDER BY lastname asc";

如果我在搜索栏中搜索词干,它会显示不必要的词,例如“系统”。

【问题讨论】:

  • 也许使用正则表达式并使用单词边界,您必须查找 posix 版本,它不是 \b

标签: php mysql sql search full-text-search


【解决方案1】:

如果您正在寻找跨多个列的搜索,但每个单词必须搜索词开头,您可能需要将其设为多个 LIKE 语句?

$sql = "SELECT * FROM `faculty` WHERE 
`firstName` LIKE ‘$textSearch%’ OR `lastName` LIKE ‘$textSearch%’ OR `expertise` LIKE ‘$textSearch%’ OR `affiliation` LIKE ‘$textSearch%’ 
 ORDER BY lastname asc";

【讨论】:

  • 嗨,卢克,感谢您的回复。这在某种程度上是有效的。但是,如果我有一个专业知识列看起来像“嘿,我是工程师”。只有当我输入“嘿”时它才会起作用。如果我键入像工程师这样位于中间的东西,它将无法正常工作。
  • 嗨,Amun,我在 SO 上找到了另一个链接,它显示了与您所遇到的问题类似的问题。 [stackoverflow.com/questions/656951/…
猜你喜欢
  • 1970-01-01
  • 2019-02-01
  • 1970-01-01
  • 2021-01-04
  • 1970-01-01
  • 1970-01-01
  • 2014-07-14
  • 2019-09-22
  • 1970-01-01
相关资源
最近更新 更多