sqlite全文搜索标记器的python绑定
sqlitefts的Python项目详细描述
sqlitefts python
sqlitefts python为SQLite Full-Text search(FTS3/4)和FTS5的标记赋予器提供绑定。它允许您用python编写标记器。
sqlite有全文搜索功能fts3/fts4和fts5,还有一些predefined tokenizers for FTS3/4,还有predefined tokenizers for FTS5。 它易于使用,并且有足够的功能。python有一个内置的sqlite模块, 使其易于使用和部署。全文搜索不需要其他任何东西。
但是…对于包括日语在内的一些语言来说,预定义的标记器是不够的。同时,编写自己的标记器也不容易。 这个模块提供了使用python和CFFI编写标记器的能力,这样就不需要c编译器来编写标记器。
它还具有排序函数,它是基于A8的,实用函数添加了辅助函数,还有一个辅助函数实现。注意:使用此模块的所有连接都应显式关闭。由于gc行为,当程序终止时,如果连接保持打开状态,则可能会崩溃。
样本标记器
由于fts3/4和fts5存在差异,因此定义了两个不同的基类。
- fts3/4的标记器可以通过fts3tokenizeradaptor与fts5一起使用。
- 如果不使用'flags',fts5的标记器可以与fts3/4一起使用。
富时3/4:
import sqlitefts as fts class SimpleTokenizer(fts.Tokenizer): _p = re.compile(r'\w+', re.UNICODE) def tokenize(self, text): for m in self._p.finditer(text): s, e = m.span() t = text[s:e] l = len(t.encode('utf-8')) p = len(text[:s].encode('utf-8')) yield t, p, p + l tk = sqlitefts.make_tokenizer_module(SimpleTokenizer()) fts.register_tokenizer(conn, 'simple_tokenizer', tk)
富时5指数:
from sqlitefts import fts5 class SimpleTokenizer(fts5.FTS5Tokenizer): _p = re.compile(r'\w+', re.UNICODE) def tokenize(self, text, flags=None): for m in self._p.finditer(text): s, e = m.span() t = text[s:e] l = len(t.encode('utf-8')) p = len(text[:s].encode('utf-8')) yield t, p, p + l tk = fts5.make_fts5_tokenizer(SimpleTokenizer()) fts5.register_tokenizer(conn, 'simple_tokenizer', tk)
要求
- Python 2.7, Python 3.3+, and PyPy2.7, PyPy3.2+
- CFFI
- FTS3/4 and/or FTS5 enabled SQLite3 or APSW (for Windows, you may need to download and replace sqlite3.dll)
- SQLite 3.11.x have to be compiled with -DSQLITE_ENABLE_FTS3_TOKENIZER to enable 2-arg fts3_tokenizer
- SQLite 3.10.2 and older versions do not have extra requirements. 2-arg fts3_tokenizer is always avaiable.
- SQLite 3.12.0 and later vesrions do not have extra requirements. 2-arg fts3_tokenizer can be enabled dynamically.
apsw用户注意:apsw合并构建不公开此模块中使用的sqlite api,因此即使libsqlite3.so/sqlite3.dll对sqlite没有运行库依赖关系,它也是必需的。apsw本地构建已经依赖于共享库。详细信息:可以通过connection.config调用sqlite3_db_config,但它拒绝sqlite_dbconfig_enable_fts3_tokenizer注册新的tokenizer。在APSW 3.21.0-R1测试。
许可证
此软件是在麻省理工学院的许可下发布的,请参阅许可证。