Tag Archives: 教程

学习Xapian(3) – 同义词的查询拓展

Xapian支持同义词的查询拓展。
按照同义词进行拓展算是查询拓展最基本的一种方式。
比如“汽车展览”“车展”是同义词,我们搜索汽车展览的时候,也会把“车展”的结果返回。
很多人认为这个就是拼写校正,但实际它比拼写校正稍微高级点,特别是放在Xapian的语境下,毕竟拼写校正是基于编辑距离而不是语义的。

1、在DB写入同义词组
创建同义词组的API很简明。
WritableDatabase::add_synonym(term, synonym)
这一对同义词是有方向的,term[……]

继续阅读

学习Xapian(2) – 拼写校正

Xapian提供了拼写校正功能,其基本算法就是编辑距离,只不过它支持UTF-8,也就是说是支持中文的。

1、建立拼写校正辞典

虽然编辑距离的算法很土很原始,但是Xapian提供了方便的接口建立辞典,至少有如下两种方式:
(1)Xapian::WritableDatabase.db.add_spelling(word, freq)
word就是正确的词,freq是出现频率,默认是1。
频率的作用是这样的,如果对于一个词比如篮球和蓝球,前者add了4次,后者出现了3词,那么当对”兰[……]

继续阅读

Sphinx 1.10的测试

编译Sphinx 1.10之后,看看它到底是怎么用的。
总的来说,检索系统就是建索引和搜索两个过程。
由于我们不准备使用MySQL引擎的部分,数据源采用XML接口,因此和官方文档中出入较大。

1、配置Sphinx

附上数据源test.xml

2、建索引

3、搜索
首先要启动搜索[……]

继续阅读