Xapian实现Simple BM25F

SimpleBM25F是BM25F的基础拓展版本,主要用于多个域的拓展,感兴趣的可以看《Simple BM25 Extension to Multiple Weighted Fields》。

主要观点:按照权重将不同域重复相应次数,拼成无结构的混合文本桶,然后只计算一次BM25得分。

而之前很多人采用的各个域先计算不同的BM25,再线性组合的做法,则破坏了词项独立性而效果很差。

传统:bm25.cpp
#include <xapian.h>
#include &[......]

继续阅读

Java核心技术卷II(第8版) – 读书笔记 – 第1章

1、输入流:可以从中读取一个字节。InputStrean

输出流:可以向其中写入一个字节。OutputStream

2、流来源、去处可能是文件,也可能是网络等。

3、由于Unicode多个字节表示一个字,所以不可能用流读取Unicode编码的文件。因此引入了Reader和Writer处理他们(基于双字节)。

4、基础的流只有两个:InputStream和OutputStream
abstract class InputStream
{
abstract in[......]

继续阅读

WordCount的一个变种版本...Hadoop

本来是要用Hadoop给柯西搜索写一下锚文本聚集。但是发现上个版本的爬虫居然没有存锚文本,实在无聊,写了个统计域名(实际是host)的计数器。

输入:一行一个url
流程:提取url的domain,对domain计数+1
输出:域名,域名计数

这次完全用新的API写的。

代码如下:

Mapper
package com.keseek.hadoop;

import java.io.IOException;
import java.net.URI;

imp[......]

继续阅读

[转]Ubuntu + windows 7 双系统(非Grub MBR)

转载自:忘记了。。。改天补上

这是我一直喜欢的方法,不把Grub装在MBR上,好处是重装Windows7不用重新恢复Grub。重装Linux也不会影响Windows。

我的硬盤為串口即SATA(也就是識別為sda)執行:
sudo dd if=/dev/sda of=/media/linux.lnx bs=512 count=1

如果你的硬盤為並口即IDE執行:

sudo dd if=/dev/hda of=/media/linux.lnx bs=512 count=1[......]

继续阅读