当前位置: 首页 > 知识库问答 >
问题:

基于来自RLI的令牌匹配数排序Sql结果

司马腾
2023-03-14

我试图实现一个简单的搜索查询,我将搜索文本拆分为标记,然后返回包含任何标记的所有结果,我使用类似“token1 | token2 | token3 |…”的RLIKE,这是正确的工作,并返回所有结果,但现在我想按匹配的RLIKE中的令牌数对结果进行排序,这是可能的吗?提前谢谢。

SELECT p.* FROM product p 
WHERE p.title RLIKE 'token1|token2|token3';

共有1个答案

端木弘方
2023-03-14

您可以对ORDER BY子句中的每个令牌使用操作符LIKE

ORDER BY (p.title LIKE '%token1%') +
         (p.title LIKE '%token2%') +
         (p.title LIKE '%token3%') DESC

对于true而言,每个布尔表达式p.title(如“%tokenX%”)的计算结果为1,对于false而言,计算结果为0

 类似资料:
  • foo-bar-herp foo-bar-derp baz-blub其他东西 我想提供一个搜索工作,以便 “foo bar”(标记化前缀) “Foo Herp”(跳过令牌) “foo-bar-”(确切的前缀) “bar-herp”(中间的确切字符串) “foo ba”(一个完整的令牌和另一个令牌的前缀) null

  • 效果很好。但是我也想匹配包含关键字的句子,这些关键字不会被期望终止ID+块。例如 fist显示为,然后作为第一个ID+的一部分。按照上面链接的问题的例子,我可以这样修复它: 它起作用了,而且做的正是我想要的。在我的真实语言中,我有数百个关键字列表,用于不同类型的句子,所以如果我尝试这种方法,我肯定会犯错误,当我在我的语言中创建新的结构时,我必须返回并编辑所有其他结构。 最好是从列表中进行非贪婪匹配

  • 问题内容: 这里有点复杂的SQL问题。 我目前有一个与多个字段匹配的SELECT语句,就像这样。 我想修改该语句,以使其使用OR而不是AND,从而选择与任何字段匹配的所有记录。 下一步是使用评分系统对结果进行排名。 所以… 匹配1-如果field2和field 3匹配,则得分为1400 匹配2-如果field1和field 4匹配,则得分将为1010 比赛1将在结果顶部。 对于使用SQL实现此目标

  • 我是一个Antlr4新手,有一个相对简单的语法问题。语法在末尾的底部给出。(这是一个语法片段,用于分析生物序列变体的描述)。 在下面的单元测试中,我试图解析字符串。 这里出了什么问题?我在哪里可以学习如何解决这个问题?

  • 我已经阅读了这个问题的公认答案,并创建了一个自定义令牌、过滤器和身份验证提供程序。 问题: 当我尝试“获取/登录”时: null 最后,安全配置:

  • 场景:匹配算法已识别ID1,ID2已匹配。我需要对匹配做进一步的分析。为此,我需要减少输出中的行数并正确排序。 这个输入只是样本和子集。拥有数千条实际记录使这项任务变得困难。 输入: 预期产出: 我需要确保输出应该有ID,应该有ID1和ID2组合的不同记录,这仍然很好,因为我可以进行distinct和union。 棘手的部分是确保输出中的数据排序。我需要将相似的行按顺序排列。 示例: 111,22