【发布时间】:2020-12-08 05:19:23
【问题描述】:
我有以下格式的数据:
+---------+---------+----------+-----------+-----------+-----------+
| id | title | author | keyword_1 | keyword_2 | keyword_3 |
+---------+---------+----------+-----------+-----------+-----------+
我希望将其存储在数据库中,以便通过title、keyword_1、keyword_2 或keyword_3 进行搜索。
一个例子是
+---------+------------------+-----------+-------------+-------------+-----------+
| id | title | author | keyword_1 | keyword_2 | keyword_3 |
+---------+------------------+-----------+-------------+-------------+-----------+
| 123 | Learn Java 101 | John Doe | java | programming | software |
+---------+------------------+-----------+-------------+-------------+-----------+
在前端,有一个表单,用户可以在其中输入标题和/或关键字。需要查询数据库以获取此信息。但用户输入可能不会完全匹配,因此我们需要进行某种正则表达式或模糊匹配。用户有效载荷可能会输入如下内容:
{
title: "Learn Java",
author: "Jon Doee",
keyword1: "computers",
keyword2: "softwar",
keyword3: null,
}
我知道有一些内置操作,例如,在 Postgres 中我们有 LIKE 和 Levenshtein()。但是,我不确定这是否是正确的方法。将关键字与所有三列进行比较似乎是一项非常昂贵的操作。
当然必须有一个干净的方法来做到这一点。我在这里发帖是因为我想检查这是否是我应该走的路。
从架构的角度来看,这是存储数据的正确方法吗?我考虑过使用基于文档的系统,但我不确定这会更好或更糟。
我对这一切有些陌生,希望能就推荐的内容提供一些指导。 谢谢!
【问题讨论】:
标签: sql database-design architecture full-text-search fuzzy-search