Datasette 用于搜索
Datasette 构建于 SQLite 之上,SQLite 包含一个健壮、功能齐全的全文搜索实现。
Datasette 自动检测已配置全文搜索的表,并添加一个搜索框,网站用户或 JSON 或 CSV API 均可使用此搜索框。
您现在可以通过搜索 FARA 记录或全球发电厂来试用此功能。
为表启用搜索
sqlite-utils 命令行工具可用于为表的特定列集启用全文搜索
% sqlite-utils enable-fts mydb.db documents title summary
或者,您可以通过安装 datasette-configure-fts 插件,直接在 Datasette 界面中配置搜索。
为您的网站实现快速自动完成搜索是一篇教程,展示了如何编写一个爬虫来填充 Datasette 中的全文搜索索引,然后使用 Datasette JSON API 构建一个 JavaScript 自动完成搜索界面。
使用预定义查询实现搜索
Datasette 预定义查询可用于配置一个 SQL 查询,该查询返回表的搜索结果并按相关性排序。
www.niche-museums.com 上的搜索使用了这种方法。这是一个搜索 bones
的示例
这使用了名为 search
的预定义查询,该查询在此定义,如下所示
select
museums_fts.rank,
museums.*
from
museums
join museums_fts on museums.id = museums_fts.rowid
where
museums_fts match case
:q
when '' then '*'
else escape_fts_query(:q)
end
order by
museums_fts.rank
在此尝试该查询。
结果由此自定义模板渲染。
用于搜索的插件
datasette-search-all 插件添加了一个搜索框,该搜索框可并行搜索附加到 Datasette 的所有数据库中所有已配置 FTS 的表。
您可以在此处看到其效果:fara.datasettes.com/-/search?q=manafort
dogsheep-beta 是一个插件,它添加了一个可自定义的搜索引擎,可以创建索引来同时搜索多个表并合并相关性评分。此站点上的搜索就使用了它,例如datasette.io/-/beta?q=fts - 您可以在为 datasette.io 构建搜索引擎中阅读更多关于其工作原理的信息。