社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

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

Peter Kim • 5 年前 • 1543 次点击  

例如,假设关键字是“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
 
1543 次点击  
文章 [ 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 会被捡起来数数。