需求,最近实现了文章的原创度检测功能,处理思路一是分词之后做搜索引擎匹配飘红,另一方面是量化词组,按文章、段落、句子做数据库查询,功能基本满足实际需求。

接下来,还需要在海量大数据中快速的查找到与一句或者一段话最相关的文章、段落。

上一篇随笔里记录有当时的一些想法,今天下午按想法具体实现并测试了一次,速度比直接分组查询肯定快了很多很多,回顾下我的实现步骤:

压缩"语料库,即提取特征词或词频,做量化处理之后以“列向量”形式保存到数据库;然后按前N组词拼为向量组,以供查询使用,即组合为1到N字的组合,量化后以“行向量”形式保存到数据库(目前是用MYSQL),计算和查询相似度的时候先提取特征,然后量化,再查询各Long型数值字段,速度应该会较一般查询要快一些。

应用举例:[下午实现了具体想法,目前系统正在处理数据中,预计会在八千万行的数据集,相信查询速度应该还可以]

【查询测试】查询以下特征

            Dictionary<string, int> words = new Dictionary<string, int>();
            words.Add("五笔", 1);
            words.Add("拼音", 1);
            words.Add("笔画", 1);
            words.Add("其它", 1);
            words.Add("英盘", 1);
            words.Add("美盘", 1);
            words.Add("法盘", 1);

            //List<Dictionary<int, long>> WordList = new List<Dictionary<int, long>>();

            //for (int i = 0; i < 15; i++)
            //{
            //    WordList.Add(GetWordSecurity(words, i + 1));
            //}
            //直观看数据
            Dictionary<int, long> R1 = GetWordSecurity(words, 1);
            Dictionary<int, long> R2 = GetWordSecurity(words, 2);
            Dictionary<int, long> R3 = GetWordSecurity(words, 3);
            Dictionary<int, long> R4 = GetWordSecurity(words, 4);
            Dictionary<int, long> R5 = GetWordSecurity(words, 5);
            Dictionary<int, long> R6 = GetWordSecurity(words, 6);
            Dictionary<int, long> R7 = GetWordSecurity(words, 7);
            Dictionary<int, long> R8 = GetWordSecurity(words, 8);
            Dictionary<int, long> R9 = GetWordSecurity(words, 9);
            Dictionary<int, long> R10 = GetWordSecurity(words, 10);
            Dictionary<int, long> R11 = GetWordSecurity(words, 11);
            Dictionary<int, long> R12 = GetWordSecurity(words, 12);
            Dictionary<int, long> R13 = GetWordSecurity(words, 13);
            Dictionary<int, long> R14 = GetWordSecurity(words, 14);

【量化数据】我选的是MD5->Long做量化

五笔 -8683246507546018072
拼音 5720075168044685354
笔画 6444854990336207024
其它 -4797408270696495584
英盘 -1741849883950345011
美盘 4116094244106799890
法盘 

【查询】 根据实际需求(即相关度要求)仅仅只需要取以下列表中的一个值做为查询条件。即,通过分词-做词行向量排列,特征列向量排列将文章映射成ID,这样我们

就可以通过 Select .. From T Where Long1= Value 实现文章相关度的查询【根据相关度要求可随时改变查询字段LongN】

   二字词   Dictionary<int, long> R1 = GetWordSecurity(words, 1);

+  [0] {[1, -2963171339501332718]} System.Collections.Generic.KeyValuePair<int,long>
+  [1] {[2, -2238391517209811048]} System.Collections.Generic.KeyValuePair<int,long>
+  [2] {[3, 4966089295467037960]} System.Collections.Generic.KeyValuePair<int,long>
+  [3] {[4, -6281813915328659238]} System.Collections.Generic.KeyValuePair<int,long>
+  [4] {[5, 922666897348189770]} System.Collections.Generic.KeyValuePair<int,long>
+  [5] {[6, 3978225284094340343]} System.Collections.Generic.KeyValuePair<int,long>
+  [6] {[7, -8610574661558066372]} System.Collections.Generic.KeyValuePair<int,long>
Dictionary<int, long> R2 = GetWordSecurity(words, 2);

以上测试在今天下午全部完成编码及测试,现在我的系统正在做数据抓取和量化处理,初步预计数据集八千万行左右,做了好几年程序,这是咱第一次处理超百万行数据呢。

(已实现)相似度到大数据查找之Mysql 文章匹配的一些思路与提高查询速度的更多相关文章

  1. 相似度到大数据查找之Mysql 文章匹配的一些思路与提高查询速度

    文章相关度匹配的一些思路---"压缩"预料库,即提取用特征词或词频,量化后以“列向量”形式保存到数据库:按前N组词拼为向量组供查询使用,即组合为1到N字的组合,量化后以“行向量”形 ...

  2. 三【相关度 相似度查询与计算】相似度到大数据查找之Mysql 文章匹配的一些思路与提高查询速度

    记录下,在上2回的数据基础之上,附带一个互信息(MI,Mutual Information)可以计算词之间的相关度 标准互信息 MI(X,Y)=log2p(x,y)/p(x)p(y) 值越大于0 则趋 ...

  3. sql处理百万级以上的数据提高查询速度的方法

    原文:http://blog.csdn.net/zhengyiluan/article/details/51671599 处理百万级以上的数据提高查询速度的方法: 1.应尽量避免在 where 子句中 ...

  4. 《转》sql处理百万级以上的数据提高查询速度的方法

    处理百万级以上的数据提高查询速度的方法: 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考 ...

  5. 大数据量时Mysql的优化

    (转自网络) 如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求.这个时候NoSQL的出现暂时 ...

  6. 大数据平台搭建 - Mysql在linux上的安装

    一.简介 MySQL是一个关系型数据库系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 ...

  7. .net core利用MySqlBulkLoader大数据批量导入MySQL

    最近用core写了一个数据迁移小工具,从SQLServer读取数据,加工后导入MySQL,由于数据量太过庞大,数据表都过百万,常用的dapper已经无法满足.三大数据库都有自己的大数据批量导入数据的方 ...

  8. 如何将大数据保存到 MySql 数据库

    1. 什么是大数据 1. 所谓大数据, 就是大的字节数据,或大的字符数据. 2. 标准 SQL 中提供了如下类型来保存大数据类型: 字节数据类型: tinyblob(256B), blob(64K), ...

  9. 一文总结高并发大数据量下MySQL开发规范【军规】

    在互联网公司中,MySQL是使用最多的数据库,那么在并发量大.数据量大的互联网业务中,如果高效的使用MySQL才能保证服务的稳定呢?根据本人多年运维管理经验的总结,梳理了一些核心的开发规范,希望能给大 ...

随机推荐

  1. SQL Server中取两个表的交集,并集和差集

    在项目中遇到要取两个表差集的情况 假设有两个表tblNZPostCodes, NZPostcode  两个表中存储的都是新西兰的post code信息,字段一致,只是数据上有所差异. 1. Union ...

  2. UVa 127 - "Accordian" Patience

    题目:52张扑克,从左到右在平面上排列,按着如下规则处理: 1.按照从左到右的顺序,如果一张牌和左边的第一张或者第三张匹配,就把它放到对应的牌上面. 2.如果可以移动到多个位置,移动到最左端的牌上面. ...

  3. JavaScript要点(十) HTML DOM - 改变 HTML

    HTML DOM 允许 JavaScript 改变 HTML 元素的内容. A.改变 HTML 输出流 JavaScript 能够创建动态的 HTML 内容: 今天的日期是: Thu Oct 13 2 ...

  4. JS单词形式的运算符

    1.void 运算表达式并忽略其返回值,比如void (1+2),void (0) <html> <head> <meta http-equiv="conten ...

  5. ZZTHX-线程锁

    以前一直在做卡乐付,悲剧的是项目中的余额查询,超级转账和刷卡器相关的东西已经开发好了,我对这块还是比较好奇和感兴趣的,在项目空闲的时候我就开始尝试熟悉和了解这块的业务和代码.实践出真理,只有在实践中才 ...

  6. 【转】C++对象内存分配问题

    原文:http://blog.csdn.net/c504665913/article/details/7797859 如果一个人自称为程序高手,却对内存一无所知,那么我可以告诉你,他一定在吹牛.用C或 ...

  7. nginx,FastCGI启动语句

    /etc/init.d/nginx restart spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi

  8. Android硬件加速

    Android从3.0(API Level 11)开始,在绘制View的时候支持硬件加速,充分利用GPU的特性,使得绘制更加平滑,但是会多消耗一些内存. 开启或关闭硬件加速: 由于硬件加速自身并非完美 ...

  9. sql server char nchar nvarchar varchar之間的區別

    char存储固定长度的字符串,最大长度为8000个字节. varchar存储可变长度的字符串.最大长度为8000个字节. nchar存储固定长度的Unicode字符串,最大长度为4000个字符. nv ...

  10. MySQL使用hugepage

    http://blog.csdn.net/dba_waterbin/article/details/9669929http://www.cnblogs.com/LMySQL/p/4689868.htm ...