我有一个非常简单的搜索查询,如下所示
select * from products_stock where (
title like '%$searchterm%' or
short_desc like '%$searchterm%' or
long_desc like '%searchterm%'
)
当我从 long_desc 列中获得命中时,我想在 PHP 中编写一些特殊行为。有什么办法可以让mysql的结果高亮在哪一列搜索成功?
最佳答案
您可以使用派生字段。看起来很丑,但有效:
SELECT *, (title LIKE '%$searchterm%') AS found_in_title,
(short_desc LIKE '%$searchterm%') AS found_in_short_desc
etc...
LIKE 将返回一个 bool 值 true/false 作为结果集中的一个字段,AS 别名将告诉您匹配发生在哪个字段中。
请注意,对于这类事情,您最好使用全文索引。 LIKE '%...%'
匹配不能使用索引,并且在“大”表上性能会非常糟糕。
关于mysql搜索,返回搜索成功的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13705644/