加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

mysql-反向搜刮:每个文档的短语

发布时间:2021-01-25 02:27:49 所属栏目:编程 来源:网络整理
导读:我有一个布满短语(80-100个字符)和一些冗长的文档(50-100Kb)的数据库,我想要给定文档的短语排名列表;而不是搜刮引擎的凡是输出,而是给定短语的文档列表. 我早年行使过MySQL全文索引,并研究了Lucene,但从未行使过. 他们好像都倾向于较量短(搜刮词)和长(文档)

我有一个布满短语(80-100个字符)和一些冗长的文档(50-100Kb)的数据库,我想要给定文档的短语排名列表;而不是搜刮引擎的凡是输出,而是给定短语的文档列表.

我早年行使过MySQL全文索引,并研究了Lucene,但从未行使过.
他们好像都倾向于较量短(搜刮词)和长(文档).

您将怎样得到相反的功效?

最佳谜底 我对Wikipedia问题数据库做了相同的事变,每个?50KB的文档想法镌汰了几百毫秒.那如故不足快,无法满意我的需求,但也容许觉得您事变.

根基上,该设法是尽也许行使散列,而且仅对也许的匹配项举办字符串较量,这长短常有数的.

起首,获取数据库并将其转换为哈希数组.假如您稀有十亿个短语,则也许不得当您.在计较哈希值时,请确保将词组转达给标志器,以消除标点标记和空格.这部门只需完成一次.

然后,行使沟通的标志天生器赏识文档,保存最后的1,2,.. n个标志散列的运队列表.在每次迭代时,您都对哈希数据库中的哈希举办二进制搜刮.

找到匹配项时,您将举办现实的字符串较量,以查察是否找到匹配项.

这是一些代码,我想汇报您,艰巨的此示例现实上并未举办字符串较量:

            HashSet<Long> foundHashes = new HashSet<Long>();

            LinkedList<String> words = new LinkedList<String>();
            for(int i=0; i<params.maxPhrase; i++) words.addLast("");

            StandardTokenizer st = new StandardTokenizer(new StringReader(docText));
            Token t = new Token();
            while(st.next(t) != null) {
                String token = new String(t.termBuffer(),t.termLength());
                words.addLast(token);
                words.removeFirst();

                for(int len=params.minPhrase; len<params.maxPhrase; len++) {
                    String term = Utils.join(new ArrayList<String>(words.subList(params.maxPhrase-len,params.maxPhrase))," ");

                    long hash = Utils.longHash(term);

                    if(params.lexicon.isTermHash(hash)) {
                        foundHashes.add(hash);
                    }
                }
            }

            for(long hash : foundHashes) {
                if(count.containsKey(hash)) {
                    count.put(hash,count.get(hash) + 1);
                } else {
                    count.put(hash,1);
                }
            }

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读