我有以下数据库模式
产品
ID | 姓名 | 制造商编号 |
---|---|---|
指南(PK) | 细绳 | (FK) |
- | ECOSYS M2640idw | 3 |
- | 信息打印 1140 | 2 |
生产
ID | 姓名 |
---|---|
(PK) | 细绳 |
1 | 日立 |
2 | IBM |
3 | 京瓷美达 |
- 两个名称(产品和制造商)都可以由几个单词组成;
我有一个按随机顺序编译的搜索字符串(由用户从移动应用程序提供)(产品名称制造商名称或制造商名称产品名称)名称可能是部分的,我需要选择与用户输入匹配的数据库条目,搜索字符串中制造和产品部分之间没有分隔符。
例如
- 搜索输入:
Kyoce ecos
应在结果中提供一个条目ECOSYS M2640idw
- 搜索输入:
kyocera mi ecosys
应在结果中提供一个条目ECOSYS M2640idw
- 搜索输入:
ibm
应提供结果Infoprint 1140
您能否帮助找到一种更好的方法来构建 SQL 查询以在 Postgresql 上解决这个问题
谢谢您的帮助
将产品和制造商以及 string_to 表 (搜索输入) 连接起来。
然后使用 LIKE 或 ILIKE 来搜索单词和单词部分。
你需要决定是否
对于
search whole words
@Mertuarez 提供的解决方案示例。我建议使用搜索单词部分的示例。
对于搜索输入“kyo print”,输出为
小提琴
解决方案:
https://www.postgresql.org/docs/current/sql-refreshmaterializedview.html
询问:
全文:
https://neon.tech/postgresql/postgresql-indexes/postgresql-full-text-search