我的表格有一个城市和描述列,我的网页有一个搜索字符串的单一输入..
如果我输入我的输入,furniture production我会得到company name,所以很好,但是如果我想对furniture production london城市做类似这个字符串的事情,我不会得到任何结果。
如何修复此查询以与城市列或其他列一起使用?
SELECT slug, title FROM catalog WHERE city || description LIKE '%$keyword%
Run Code Online (Sandbox Code Playgroud)
正如评论中所述,使用这种“流畅”标准进行搜索在数据库上会非常昂贵。
无论如何,如果这是你想走的路,这是我的尝试:
SELECT slug, title FROM catalog
WHERE CONCAT(city, description) LIKE '$keyword'
OR CONCAT(description, city) LIKE '$keyword'
Run Code Online (Sandbox Code Playgroud)
为了使这项工作,您可能想用代码替换所有空格,%并可能%在代码中放置前导和尾随。
我认为执行查询的代码是 PHP,所以可以这样做:
$keyword = "%" . str_replace(" ", "%", $keyword) . "%";
Run Code Online (Sandbox Code Playgroud)
就像我说的,这对数据库来说会非常沉重,特别是如果行数很重要。尝试优化用于全文搜索的列,并确保输入表单中的搜索条件不能太短。
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
3937 次 |
| 最近记录: |