gpt4 book ai didi

mysql - SQL搜索结果排名

转载 作者:可可西里 更新时间:2023-11-01 08:00:26 26 4
gpt4 key购买 nike

我有一个表调用对象,其中有列:

object_id, 
name_english(vchar),
name_japanese(vchar),
name_french(vchar),
object_description

对于每个对象。

当用户执行搜索时,他们可能会输入英语、日语或法语...而我的 sql 语句是:

SELECT  
o.object_id,
o.name_english,
o.name_japanese,
o.name_french,
o.object_description
FROM
objects AS o
WHERE
o.name_english LIKE CONCAT('%',:search,'%') OR
o.name_japanese LIKE CONCAT('%',:search,'%') OR
o.name_french LIKE CONCAT('%',:search,'%')
ORDER BY
o.name_english, o.name_japanese, o.name_french ASC

有些条目是这样的:

Tin spoon,  
Tin Foil,
Doctor Martin Shoes,
Martini glass,
Cutting board,
Ting Soda.

因此,当用户搜索单词“Tin”时,它将返回所有这些结果,但我只想返回特定包含术语“Tin”的结果或显示结果并按相关顺序对它们进行排名。我怎样才能做到这一点?

谢谢。

最佳答案

您可以使用 MySQL FULLTEXT 索引来做到这一点。这需要 MyISAM 表类型、(name_english、name_japanese、name_french、object_description) 或您要搜索的任何字段的索引,以及恰好在该组列上适当使用 MATCH ... AGAINST 运算符。

请参阅 http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html 处的手册,以及下页中的示例 http://dev.mysql.com/doc/refman/5.5/en/fulltext-natural-language.html

关于mysql - SQL搜索结果排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5458758/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com