MySQL搜索多个关键字

MySQL搜索多个关键字,mysql,Mysql,我试图在mySQL表中搜索长尾关键字,首先显示最接近的或精确的匹配项,然后按Fixture Name排序 必须有一种更聪明的方法来做这件事。。。任何和所有的反馈是感激的 SELECT * FROM `equipment` WHERE (`Fixture-Name` LIKE "%keyword2 keyword1%" || `Description` LIKE "%keyword2 keyword1%"||`Product-Line` LIKE "%keyword2 keyword1%" ||

我试图在mySQL表中搜索长尾关键字,首先显示最接近的或精确的匹配项,然后按
Fixture Name
排序

必须有一种更聪明的方法来做这件事。。。任何和所有的反馈是感激的

SELECT * FROM `equipment` 
WHERE (`Fixture-Name` LIKE "%keyword2 keyword1%" || `Description` LIKE "%keyword2 keyword1%"||`Product-Line` LIKE "%keyword2 keyword1%" || `Fixture-Type` LIKE "%keyword2 keyword1%" ||   `Lamp-Watts` LIKE "%keyword2 keyword1%")
UNION

SELECT * FROM `equipment` 
WHERE (`Fixture-Name` LIKE "%keyword2%" || `Description` LIKE "%keyword2%" || `Product-Line` LIKE "%keyword2%" || `Fixture-Type` LIKE "%keyword2%" || `Lamp-Watts` LIKE "%keyword2%")
UNION 

SELECT * FROM `equipment` 
WHERE (`Name` LIKE "%keyword1%" || `Description` LIKE "%keyword1%" || `Product-Line` LIKE "%keyword1%" || `Fixture-Type` LIKE "%keyword1%" || `Lamp-Watts` LIKE "%keyword1%")

对于此类应用程序,最好构建一个
关键字
表和
关键字_设备
,例如:

CREATE TABLE keyword (
    id INT NOT NULL AUTO_INCREMENT,
    word CHAR(127) NOT NULL,
    PRIMARY KEY (id),
    INDEX(word)
)

CREATE TABLE keyword_equipment (
    keyword_id INT NOT NULL,
    equipment_id INT NOT NULL,
    weight DOUBLE NOT NULL,
    PRIMARY KEY (keyword_id, equipment_id),
    FOREIGN KEY (keyword_id) REFERENCES keyword (id),
    FOREIGN KEY (equipment_id) REFERENCES equipment (id),
)
您的查询将如下所示:

SELECT e.*
FROM keyword AS k
INNER JOIN keyword_equipment AS ke ON ke.keyword_id = k.id
INNER JOIN equipment AS e ON e.id = ke.equipment_id
WHERE k.word IN ('keyword1', 'keyword2')
GROUP BY e.id
ORDER BY SUM(ke.weight) DESC

插入或更新
设备
时,请确保
关键字
关键字_设备
表保持最新

如果我是你,我会做一个循环,如果这是与PHP或其他一些3级语言。这两个好主意!谢谢我将对每一个都做一些探索。