我有一个包含1000个关键字的文本文件,我希望与MySql数据库匹配,以查找数据库中每个关键字的出现次数。
以下是我为单个单词找到匹配项的方法:
@Override
public int getViewTypeCount() {
return getCount();
}
@Override
public int getItemViewType(int position) {
return position;
}
有没有办法对txt文件中的所有1000个单词做同样的事情?
答案 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;