Py学习  »  DATABASE

如何查找一个文本中出现了多少个关键字并使用mysql进行排序?

Peter Kim • 5 年前 • 1553 次点击  

例如,假设关键字是“Tokyo restaurant”,我在Place表中有PlaceDescription列,其中PlaceID=1的PlaceDescription是“XXXXX是一家漂亮的东京餐厅”,PlaceID=2的PlaceDescription是“yyyy是一家受欢迎的印度餐厅”,PlaceID=3的 PlaceDescription是“ZZZZ是东京的一家快餐店”,PlaceID=4的PlaceDescription是“AAAAA是一家位于东京的成功餐厅”。这是一家始建于2000年的餐厅。”

我想要它回来就像

地点编号

12个

2 1个

3 2个

4 2个

我试着访问一些链接,比如 MySql: Count amount of times the words occur in a column 但他们不回答我的问题。

选择PlaceID,COUNT(*)FROM PlaceDescription LIKE'%tokyo%'或PlaceDescription LIKE'%restaurant%';

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/50718
 
1553 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Tim Biegeleisen
Reply   •   1 楼
Tim Biegeleisen    5 年前

你可以试着把你的电流求和 LIKE 表达。我建议使用 REGEXP 但是:

SELECT
    PlaceID,
    (PlaceDescription REGEXP '[[:<:]]tokyo[[:>:]]') +
    (PlaceDescription REGEXP '[[:<:]]restaurant[[:>:]]') AS Count
FROM Place
WHERE
    PlaceDescription REGEXP '[[:<:]]tokyo|restaurant[[:>:]]';

注意,我正在进行regex搜索 \btokyo\b \brestaurant\b ,意思是 正则表达式 只会找到那些确切的词,两边都有词的界限。还要注意 正则表达式 不区分大小写,因此 tokyo Tokyo 会被捡起来数数。