【问题标题】:How to check if parts of a string match to a column data in sql table如何检查字符串的某些部分是否与sql表中的列数据匹配
【发布时间】:2013-03-12 00:22:19
【问题描述】:

我想编写一个查询来检查用户提供的输入与我的表的列数据。我尝试使用 LIKE 和 CONTAINS 但它对我不起作用。例如,我的表格数据包含“Bar B Q Tonight”,如果用户输入“BBQ Tonight”,如何处理?我也为我的表启用了全文索引。我正在 Visual Studio 中使用 sql server 2005。有人可以指导我吗?

【问题讨论】:

    标签: sql .net contains sql-like


    【解决方案1】:

    一种处理方法是在您的表格上创建单独的列,其中将包含流行的搜索标签或关键字,基于此您可以向用户显示结果。

    【讨论】:

    • 我不能这样做,因为我不知道用户会搜索什么。我需要一个查询来检查表数据中是否存在子字符串
    • 这是个好主意。我只是想知道将标签逗号分隔或将它们存储在单独的表中是否更好,当前表和标签表之间存在一对多关系。
    • 我认为逗号分隔的标签会很好。
    • (这取决于您的需要)您可以用逗号分隔。此外,如果标签是通用的并且可以应用于多个列,您可以创建单独的标签表。
    • 会有类似的首字母缩写词吧?如果烧烤意味着快点回来怎么办?我的回答建议让用户选择相关性并方便它存储具有多个定义的多个首字母缩略词(如果存在)。
    【解决方案2】:

    同义词和首字母缩略词是信息检索系统 (IR) 面临的挑战。 或许实施一个小型首字母缩写词扩展系统。首字母缩略词和扩展术语。

    当用户输入此类字词时,您需要提供一些建议或扩展字词。就像在 Google 中做建议一样,或者您可以显示几个相似的术语作为查询的回报,让用户决定哪个是相关的。

    按照我的设想,您至少需要三个表,但这取决于上下文。

    1. 一个表包含停用词,因此您可以解析 输入短语并删除所有停用词。
    2. 然后在首字母缩略词表中搜索单个术语,如果 首字母缩写词有多个定义,您可以替换首字母缩写词 对于每个定义并将其传递回用户询问哪个是 相关的。如果这是网络环境,则表示超链接列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-16
      • 1970-01-01
      • 2016-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多