gpt4 book ai didi

php - 对mysql中的多个字段进行加权搜索的最佳方法?

转载 作者:IT老高 更新时间:2023-10-28 23:48:24 25 4
gpt4 key购买 nike

这是我想做的:

  • 将搜索主题与我表格的多个字段进行匹配
  • 按字段的重要性和匹配的相关性(按该顺序)对结果进行排序

例如:假设我有一个博客。然后有人搜索“php”。结果会这样显示:

  • 首先,“标题”字段的匹配项,按相关性排序
  • 然后,字段“body”的匹配项也按相关性排序
  • 等等指定字段...

我实际上是用 PHP 中的一个类完成的,但它使用了很多 UNIONS(很多!)并且随着搜索主题的大小而增长。所以我担心性能和 DOS 问题。有人对此有线索吗?

最佳答案

这种进行加权搜索/结果的方法可能适合您:

SELECT *,
IF(
`name` LIKE "searchterm%", 20,
IF(`name` LIKE "%searchterm%", 10, 0)
)
+ IF(`description` LIKE "%searchterm%", 5, 0)
+ IF(`url` LIKE "%searchterm%", 1, 0)
AS `weight`
FROM `myTable`
WHERE (
`name` LIKE "%searchterm%"
OR `description` LIKE "%searchterm%"
OR `url` LIKE "%searchterm%"
)
ORDER BY `weight` DESC
LIMIT 20

它使用一个选择子查询来提供对结果排序的权重。在这种情况下,搜索了三个字段,您可以指定每个字段的权重。它可能比联合更便宜,并且可能是纯 MySQL 中更快的方法之一。

如果你有更多的数据并且需要更快的结果,你可以考虑使用像 Sphinx 或 Lucene 这样的东西。

关于php - 对mysql中的多个字段进行加权搜索的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6496866/

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