将文本文件中的关键字与MySql字段匹配以查找出现次数

时间:2015-04-26 11:29:28

标签: mysql

我有一个包含1000个关键字的文本文件,我希望与MySql数据库匹配,以查找数据库中每个关键字的出现次数。

以下是我为单个单词找到匹配项的方法:      @Override public int getViewTypeCount() { return getCount(); } @Override public int getItemViewType(int position) { return position; }

有没有办法对txt文件中的所有1000个单词做同样的事情?

3 个答案:

答案 0 :(得分:0)

这对我有用:

SELECT `description`, COUNT(`description`) FROM `items` WHERE `description` IN ("keyword1","...","keyword1000") GROUP BY `description`

这里的关键因素是IN元素,它允许在WHERE命令中为同一过滤列指定几个项目。

你可以将1000个项目放入一个字符串中,每个项目用引号(“)和逗号(,)分隔吗?如果是,请将其粘贴到IN命令中。

警告:我之前没有尝试过1000个关键字。您可能遇到性能问题或达到SQL服务器的查询长度限制。如果发生这种情况,请研究max_allowed_packet设置或考虑将您的查询拆分为几个较小的查询。

答案 1 :(得分:0)

您可以绑定查询,然后运行1000次:

或者您可以将1000个单词加载到表中并运行JOIN查询:

var express = require('express'),
    loginFunctionality = require('./routes/login'),
    homeFunctionality = require('./routes/home')
    ...

// Connect to redis
var redisClient = redis.createClient();
redisClient.on("error", function(err){
    console.log("An error occurred with redis:" + err);
});
... 


app.get('/', homeFunctionality.home);

app.post('/register', loginFunctionality.createNewUser);

app.post('/login', loginFunctionality.login(redisClient, secret));
...

答案 2 :(得分:0)

您必须先将所有关键字导入表格的一列,然后将这两个表格的列相互匹配。

首先将文件关键字导入表格:

   LOAD DATA INFILE 'mydata.txt' INTO TABLE table_mydata
   FIELDS TERMINATED BY ''
   LINES TERMINATED BY '\r\n' (column_name);

现在,匹配两个表的列,如下所示:

  SELECT
  i.description,
  count(m.column_name)
  FROM items i
  JOIN table_mydata m
  ON i.description LIKE CONCAT('%', m.column_name, '%')
  group by i.description;