【发布时间】:2011-02-24 11:35:02
【问题描述】:
我有我的搜索词:
"Yellow large widgets"
我将这些术语分成三个词:
1 = "Yellow";
2 = "Large";
2 = "Widgets";
然后我搜索:
SELECT * FROM widgets
WHERE (description LIKE '%yellow%' OR description LIKE '%large%' OR description LIKE 'widgets')
OR (title LIKE '%yellow%' OR title LIKE '%large%' OR title LIKE '%widgets%')
如何根据这些偏差对结果进行排序?
- 标题占主导地位,如果任何术语出现在标题中,它们应该被认为更重要
- 出现次数,总出现次数较高的结果应首先出现
理想方法
- 计数
description中的出现次数。 - 这里的每一次出现都值得
1 point。 - 计数
title中的出现次数。 - 每个
title的出现都值得5 points。 - 按分数排序。
但我不知道在 SQL 中从哪里开始。
【问题讨论】:
-
使用 LIKE 是绝对要求还是您会考虑替代方案?
-
@Mark 我很乐意考虑替代方案,喜欢它是我熟悉的唯一搜索术语。我也用可能的解决方案编辑了这个问题。
-
抱歉不得不回滚,因为我把它格式化得更好。不过我的拼写很糟糕:(
标签: sql sql-order-by search-engine