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 构建搜索引擎中阅读更多关于其工作原理的信息。

Datasette 的更多用途