我们正在使用MySQL搜索来访问文章。有一些规则如下。
搜索结果应该像这样排名:
1.所有的词都在标题中(工作)
1.所有单词在文章中多次出现(不起作用)
1.所有的话都在文章中(工作)这2可能会发挥作用,如果没有上述存在.
1.其中一个词是在标题(工作)
1.其中一个词是在文章(工作)
SELECT
B.page_id,
B.page_name,
B.page_description,
FROM
kbs_page_tbl B
WHERE
A.page_id = B.page_id
AND (
(
B.page_name LIKE '%EXAMPLES%'
OR B.description LIKE '%EXAMPLES%'
OR B.tags LIKE '%EXAMPLES%'
)
AND (
B.page_name LIKE '%OF%'
OR B.description LIKE '%OF%'
OR B.tags LIKE '%OF%'
)
)
AND B.company_id IN(4)
ORDER BY
(
CASE WHEN B.page_name LIKE '%EXAMPLES%'
AND B.page_name LIKE '%OF%'
AND B.lifetime_views THEN 1 END
) DESC,
(
CASE WHEN B.description LIKE '%EXAMPLES%'
AND B.description LIKE '%OF%'
AND B.lifetime_views THEN 2 END
) DESC,
(
CASE WHEN (
B.page_name LIKE '%EXAMPLES%'
AND B.description LIKE '%EXAMPLES%'
)
AND (
B.page_name LIKE '%OF%'
AND B.description LIKE '%OF%'
)
AND B.lifetime_views THEN 3 END
) DESC,
(
CASE WHEN (
B.page_name LIKE '%EXAMPLES%'
OR B.description LIKE '%EXAMPLES%'
)
AND (
B.page_name LIKE '%OF%'
OR B.description LIKE '%OF%'
)
AND B.lifetime_views THEN 4 END
) DESC
字符串
如何满足ORDER BY子句中的第二条规则(所有单词都在文章中多次出现)?
1条答案
按热度按时间wz1wpwve1#
我不知道我是否理解正确-你想检查一个字符串是否在另一个字符串中至少出现两次?如果是的,也许你可以使用REGEXP,例如。
字符串