Sqlite3的数据库,在删除数据时并不会回收空间,因此Sqlite3提供了一个特殊操作:VACUUM,调用它,我们可以压缩数据库。
当然,在Python中压缩也是非常简单的。
[python]
def compact_sqlite3_db():
try:
conn = sqlite3.connect(SQLITE_FILE)
conn.execute("VACUUM")
conn.close()[......]
Sqlite3的数据库,在删除数据时并不会回收空间,因此Sqlite3提供了一个特殊操作:VACUUM,调用它,我们可以压缩数据库。
当然,在Python中压缩也是非常简单的。
[python]
def compact_sqlite3_db():
try:
conn = sqlite3.connect(SQLITE_FILE)
conn.execute("VACUUM")
conn.close()[......]
Xapian支持同义词的查询拓展。
按照同义词进行拓展算是查询拓展最基本的一种方式。
比如“汽车展览”和“车展”是同义词,我们搜索汽车展览的时候,也会把“车展”的结果返回。
很多人认为这个就是拼写校正,但实际它比拼写校正稍微高级点,特别是放在Xapian的语境下,毕竟拼写校正是基于编辑距离而不是语义的。
1、在DB写入同义词组
创建同义词组的API很简明。
WritableDatabase::add_synonym(term, synonym)
这一对同义词是有方向的,term[......]
#设a为字符串
import time
a = "2011-09-28 10:00:00"
#中间过程,一般都需要将字符串转化为时间数组
time.strptime(a,'%Y-%m-%d %H:%M:%S')
>>time.struct_time(tm_year=2011, tm_mon=9, tm_mday=27, tm_hour=10, tm_min=50, tm_sec=0, tm_wday=1, tm_yday=270, tm_isdst=-1)
#将"[......]
Xapian提供了拼写校正功能,其基本算法就是编辑距离,只不过它支持UTF-8,也就是说是支持中文的。
1、建立拼写校正辞典
虽然编辑距离的算法很土很原始,但是Xapian提供了方便的接口建立辞典,至少有如下两种方式:
(1)Xapian::WritableDatabase.db.add_spelling(word, freq)
word就是正确的词,freq是出现频率,默认是1。
频率的作用是这样的,如果对于一个词比如篮球和蓝球,前者add了4次,后者出现了3词,那么当对"兰[......]
前言:
Xapian是一款开源的C++信息检索系统,提供了非常强大的功能。
国人喜欢跟风,收到某宴的影响,国人一直推崇Sphinx:与MySQL深度集成,开箱即用,非常傻瓜。但是它定制起来非常的麻烦,就连最基础的中文分词都要改好多地方才能实现。
与市面上其他的信息检索相比,Xapian类似于Lucene,提供丰富、可拓展的编程接口,让Xapian能够更好的融入你的系统中。同时,他的检索性能又远远高于Lucene,并采用BM-25模型,具有更好的检索效果。
至于大家最关心的[......]