我正在为常见问题解答列表编写一些非常简单的搜索功能。我将搜索字符串拆分为各种字符,包括空格。然后沿线执行选择
SELECT *
FROM "faq"
WHERE
((LOWER("Question") LIKE '%what%'
OR LOWER("Question") LIKE '%is%'
OR LOWER("Question") LIKE '%a%'
OR LOWER("Question") LIKE '%duck%'))
我不得不稍微编辑它,因为它是由我们的数据访问层生成的,但它应该让您了解发生了什么。
上面的查询很好地证明了这个问题,因为大多数问题可能包含单词 a 或 is 在其中,但是我无法过滤掉这些,因为首字母缩略词可能对搜索者很重要。建议我们按匹配关键字的数量排序。但是我一直无法在 SQL 中找到这样做的方法(我们没有时间创建一个带有关键字索引的简单搜索引擎等)。有谁知道是否有一种方法可以计算 SQL 语句中 LIKE 匹配的数量并按此排序,以便关键字最多的问题出现在结果的顶部?