我正在开发一个网站搜索。我有多个列和不同的字段,如下所示:
tmp_auction_auto
id 订单 类别 制造商 型号 价格 price_type 位置 年份 run_type 门 安全气囊 齿轮发动机 马力气缸 驱动类型 燃油颜色 abs 电子窗口 climatcontrol 磁盘 舱口板 电脑警报 右转向 turbo parkcontrol 调节器 皮革沙龙 导航 中控锁 椅子暖水力学 无价格 租金交换 海关 清关状态 其他联系方式
tmp_auction_estate id 订单类型 交易价格 price_type price_sqm noprice 城市地址 面积 高度 维修条件 项目目的地 土地 阳台 mansard 会议楼梯_总楼梯 房间 卧室 阳台 sanitary_arr 凉廊 壁炉 空调 车库 停车场 土地_目的地建筑物 distance_central_street distance_tbilisi 储藏室 按摩浴缸 浴室 淋浴 桑拿 家具 技术 电话 互联网 发电机 游泳池 商务中心 吃 网络库存衣柜电梯燃气热水加热对讲有线电视报警系统入口安全窗口守卫安全双工三重卫星厨房陈列柜土地_铁路土地_电力土地_燃气土地_水土地_排水状况其他联系方式
tmp_auction_other id 订单标题 price price_type noprice info 联系方式
- tmp_branch id lang 标题内容 xy
- tmp_comments id reply_id 路径 用户名 电子邮件标题 内容 喜欢 不喜欢 时间 管理员
tmp_news id lang 标题 内容 日期
tmp_pages id lang 标题 内容日期
tmp_presentation id lang 标题顺序
我想知道如何进行搜索,最后我做了以下代码:
$key = 'a';
$sql = "
SELECT `id`,CONCAT('pages') as `table`,`title` as `title`,`content` as `content` FROM `tmp_pages` WHERE `title` LIKE '%".$key."%' OR `content` LIKE '%".$key."%'
UNION
SELECT `id`,CONCAT('branches') as `table`,`title` as `title`,`content` as `content` FROM `tmp_branch` WHERE `title` LIKE '%".$key."%' OR `content` LIKE '%".$key."%'
UNION
SELECT `id`,CONCAT('auction_auto') as `table`,`manufacturer` as `title`,CONCAT(`manufacturer`,' ',`model`,' / ',`price`,' ',`price_type`) as `content` FROM `tmp_auction_auto` WHERE `manufacturer` LIKE '%".$key."%' OR `model` LIKE '%".$key."%'
UNION
SELECT `id`,CONCAT('auction_estate') as `table`,CONCAT(`city`,' ',`type`) as `title`,CONCAT(`city`,' ',`address`,' / ',`price`,' ',`price_type`) as `content` FROM `tmp_auction_estate` WHERE `other` LIKE '%".$key."%' OR `city` LIKE '%".$key."%'
UNION
SELECT `id`,CONCAT('auction_other') as `table`,`title` as `title`,CONCAT(`title`,' ',' / ',`price`,' ',`price_type`) as `content` FROM `tmp_auction_other` WHERE `info` LIKE '%".$key."%' OR `title` LIKE '%".$key."%'
UNION
SELECT `id`,CONCAT('presentation') as `table`,`title` as `title`,`title` as `contact` FROM `tmp_presentation` WHERE `title` LIKE '%".$key."%'
UNION
SELECT `id`,CONCAT('news') as `table`,`title` as `title`,`content` as `content` FROM `tmp_news` WHERE `title` LIKE '%".$key."%' OR `content` LIKE '%".$key."%'
UNION
SELECT `id`,CONCAT('comments') as `comments`,`title` as `title`,`content` as `content` FROM `tmp_comments` WHERE `title` LIKE '%".$key."%' OR `content` LIKE '%".$key."%'
";
作为这里的一个缺点,我看到脚本搜索数据的方式存在一个现有的顺序,我的意思是如果有人搜索new office
现有的tmp.pages
将首先出现,而不是tmp.news
哪个更可能是相关的。
我有一个问题,这种方法可以吗?由于某种原因我不喜欢它,也许是因为我知道有更好的选择,但我仍然需要你的意见,我应该这样吗?也许有人会告诉我更好的方法。谢谢!