挖掘数百万条记录的算法
Algorithm to mine millions of records
我有超过百万的聊天记录数据,格式为
chat_message
city
timestamp
现在,我们需要检查与旅行相关的关键字,如 "travel" 或 "accomodation" 或 "hotels" 等。假设我们收集了大约 15 个与旅行相关的关键字。
需求是使用关键字挖掘与旅游相关的聊天消息。怎么样?
我能想到的解决方案 - 有一系列与旅游相关的关键字。然后扫描每个关键字的所有消息(一些字符串匹配算法)。
我认为这个解决方案是蛮力的,关于更有效的搜索算法或设置聊天记录 or/and 关键字的更多想法?
您的里程可能会有所不同。
如果您的宿主语言是 JavaScript,我建议您使用一些全文搜索引擎,例如 lunrjs。它需要对您的原始数据进行预处理,例如标记化,词干提取和索引。然后就可以更方便的搜索资料了。
不过,您的数据集还是很大,至少对于浏览器来说是这样(因为您使用的是 JavaScript)。如果您要在客户端实现此功能,则需要考虑算法以外的许多细节。内存分配,数据传输,不一一列举
但是,如果您在服务器端,ElasticSearch 等更成熟的解决方案值得您考虑。
我有超过百万的聊天记录数据,格式为
chat_message
city
timestamp
现在,我们需要检查与旅行相关的关键字,如 "travel" 或 "accomodation" 或 "hotels" 等。假设我们收集了大约 15 个与旅行相关的关键字。
需求是使用关键字挖掘与旅游相关的聊天消息。怎么样?
我能想到的解决方案 - 有一系列与旅游相关的关键字。然后扫描每个关键字的所有消息(一些字符串匹配算法)。
我认为这个解决方案是蛮力的,关于更有效的搜索算法或设置聊天记录 or/and 关键字的更多想法?
您的里程可能会有所不同。
如果您的宿主语言是 JavaScript,我建议您使用一些全文搜索引擎,例如 lunrjs。它需要对您的原始数据进行预处理,例如标记化,词干提取和索引。然后就可以更方便的搜索资料了。
不过,您的数据集还是很大,至少对于浏览器来说是这样(因为您使用的是 JavaScript)。如果您要在客户端实现此功能,则需要考虑算法以外的许多细节。内存分配,数据传输,不一一列举
但是,如果您在服务器端,ElasticSearch 等更成熟的解决方案值得您考虑。