【发布时间】:2022-01-25 23:52:38
【问题描述】:
我对数据库和查询领域完全陌生。
我有以下数据库
我想为其构建一个“智能”搜索查询,以便能够根据在isbn、name 和author 列中查找内容的查询获取相关条目。问题是输入查询不一定是关键字,它可以是关键字的一部分。我希望能够输入 isbn 编号的一部分、书名的一部分、作者姓名的一部分并返回相关结果。
假设我查询“97182”,我想要所有 isbn 以该序列开头的书。
或者如果我查询“ma”,我想要所有名称或作者以“ma”开头的条目。
例如,我最近了解到可以使用 Postgresql 执行以下操作(我相信名称是“全文搜索”):
SELECT *
FROM books
WHERE to_tsvector(isbn || ' ' || name || ' ' || author) @@ to_tsquery('proust')
输出将是在搜索的列之一中具有“proust”的行。
由于其工作方式的性质(向量化列、减少到词位等),相同的 postgresql 查询不适用于我提到的内容。不过我还没有完全理解全文搜索。
是否可以根据我的描述创建一个“更智能”的查询?
【问题讨论】:
标签: sql postgresql