【问题标题】:How can I search exactly match by full text?如何通过全文搜索完全匹配?
【发布时间】:2020-04-18 02:38:40
【问题描述】:

我有这个代码

Select [Field]
From [TBL]
where contains( [Field] , '"Tel: Come"' )

但结果是:

Tel: Come <br/>
Tel Come

我只需要告诉我:Tel: Come (exactly Match Searching) 如果我搜索“Tel Come”,结果是两者。

请帮我修复它,以便结果只有全匹配。

【问题讨论】:

  • 你的意思是= 不是CONTAINS?像: 这样的字符不会在全文索引中编入索引。

标签: sql sql-server full-text-search contains


【解决方案1】:

如果您需要查找具有确切文本 'Tel: Come' 的行,那么全文索引将不是您所追求的。全文索引不适用于此类事情,它用于查找单词,而不是短语,并且不索引 : 之类的字符。

因此,您可以使用LIKE,但您不会从索引中受益:

SELECT [Field]
FROM [TBL]
WHERE [Field] LIKE '%Tel: Come%';

【讨论】:

  • 是的,我知道这一点,在我用 LIKE 和 4 个条件编写代码之前,使用 LIKE 和 % 也会导致“Tel: comeon”在搜索之前和之后使用 SPACE,也只有 Space之后,并且没有空格,但是如果搜索文本是第一个或行尾,结果找不到它
  • 这很重要,因为 REPLACE,我的客户想要搜索“Tel: Come”,然后将其替换为“Tel Come”
  • 确定,@حامدصداقت ..? DB<>Fiddle
  • 您从不在查询中使用REPLACE,@حامدصداقت ...您这里没有给我们完整的图片吗?
  • 我通过 vb.net 管理它,我们在搜索表单上有 3 个选项 1. 任何部分:我使用 Like %Search% 2. 开头:我在包含末尾使用 * 3.Whole Word这个有 2 部分 A. 忽略噪音词没问题 B. 不要忽略噪音词(这部分我需要帮助)完全匹配包含或喜欢不不同
【解决方案2】:

如果你想要一个完整的匹配,那么你可以使用:

Select [Field]
From [TBL]
where [Field] = 'Tel: Come'

这可以利用[Field] 上的常规 索引。使用全文搜索获得完全匹配相当棘手;例如,多个空格放在一起会被忽略。

【讨论】:

  • 谢谢,但我的字段有更多文本:abc def Tel: com def ghy , .... 用 = 在其中没有找到任何记录
猜你喜欢
  • 2019-09-22
  • 2016-10-15
  • 1970-01-01
  • 2011-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-19
相关资源
最近更新 更多