-
SQLite的FTS5支持
highlight()
。该辅助函数为全文搜索查询的结果返回标签:请参阅官方文档。 -
Peewee在Github上的代码,在<sqlite_ext.py>模块也提到了
highlight()
,尽管只是顺便提一下。内置辅助功能:
- bm25(tbl[,weight_0,…weight_n](
- 突出显示(tbl、col_idx、前缀、后缀(
- 代码段(tbl,col_idx,前缀,后缀,?,max_tokens(
-
尽管Peewee已经支持
bm25()
和rank()
作为现有的FTS5辅助函数,但我在Peewee的文档中没有发现任何示例代码或对highlight()
的引用。 -
除非我遗漏了什么,否则我如何在Python代码中使用FTS5
highlight()
和Peewee?(如果这很重要的话,我用的是Django。(
是的,只需在全文搜索查询中选择fn.highlight(...)
即可。
class Post(FTS5Model):
title = SearchField()
content = SearchField()
class Meta:
database = db
db.create_tables([Post])
Post.create(title='alpha', content='this is post alpha')
Post.create(title='beta', content='this is post beta')
Post.create(title='delta', content='this is post delta')
query = (Post
.select(fn.highlight(Post._meta.entity, 1, '[', ']').alias('hi'))
.where(Post.match('post')))
print(query.sql())
for row in query:
print(row.hi)
请注意,我们必须使用Post._meta.entity
作为第一个参数,以避免使用表的别名-Sqlite特别注意显式使用FTS表名。
打印:
this is [post] alpha
this is [post] beta
this is [post] delta