我需要将用户输入与字符串列进行匹配。两者都包含空格分隔的单词。
订购标准是:
- 从开头匹配的单词数(前缀匹配)desc
- 匹配的字数desc
- 匹配单词与输入短语中的顺序相同的列排在第一位
所以给定以下示例数据
"one sample"
"un moment"
"no match"
"sample uno"
"uno sample"
"sample oun"
和样本输入"sa un foo"
,输出应该是:
"sample uno"
- 2 个前缀匹配"uno sample"
- 相同但词序不同"sample oun"
- 1 个前缀匹配 + 2 个单词匹配"un moment", "one sample"
- 1 个前缀匹配
问题是:我可以在单个 SQL 查询 ( postgresql
) 中实现它吗?我对 SQL 相当缺乏经验,所以我很感激任何帮助。谢谢!
我包含一个简单的SQL FIDDLE