代码之家  ›  专栏  ›  技术社区  ›  George Menoutis

全文索引不适用于单个单词?

  •  0
  • George Menoutis  · 技术社区  · 6 年前

    我有一个全文索引的许多列 customer 表,其中一列是 fname .

    以下查询:

    select * from customer where fname like 'In%' and code='1409584557891'
    

    返回所需行,此客户的fname为“in”。但如果我将此添加到末尾:

    and contains((customer.fname) , N'"In*"') 
    

    返回空结果集。 为什么?

    另外:还有一个名为lname的列。如果我加上等量 contains 命令更改了列及其值,它可以工作!

    1 回复  |  直到 6 年前
        1
  •  1
  •   sniperd Ali Ahmed    6 年前

    很有可能“in”是个干扰词。我也相信,如果你用全文搜索一些太短的词,比如字母“A”,它只是被认为是一个干扰词。看看“A”或“I”给了你什么。

    这里有一个链接,可以提供有关更改周围的干扰词的信息,如果是这样的话。

    https://www.mssqltips.com/sqlservertip/1491/sql-server-full-text-search-noise-words-and-thesaurus-configurations/

    您还可以简单地关闭噪音或“停止”字:

    https://dba.stackexchange.com/questions/135062/sql-server-no-search-results-caused-by-noise-words