如何在全文搜索中处理干扰词(NN)

时间:2017-02-13 09:28:16

标签: sql full-text-search noise-words

我们使用全文搜索来检查邮政编码和地址,我们发现NNx(其中x是数字)被视为噪音词。除了检查搜索字是否包含NN然后使用LIKE之外,我们知道这个问题,但无法想出一个干净的解决方案。

我们正在使用此代码。

SELECT  DISTINCT
    *
    FROM    CONTAINSTABLE(dbo.AddressData, Data, N'NN1', 1000) C
        INNER JOIN dbo.AddressData AD ON AD.Id = C.[KEY]
        INNER JOIN dbo.Address A ON A.Id = AD.AddressId

有没有人对如何逃避或阻止全文将NN视为干扰词有任何想法?

更新: 我们添加了一个if来检查输入字符串中的NN,如果NN在那里,我们只使用Like,但这对性能有很大影响。从不到一秒钟到超过5秒:/任何人有更好的解决方案?

1 个答案:

答案 0 :(得分:0)

您正在使用SQL服务器吗?

在SQL Server 2005中,干扰词已被停用词取代。 您可以编辑“停止列表”,以使NNx不再是停用词。

  

https://docs.microsoft.com/en-us/sql/relational-databases/search/configure-and-manage-stopwords-and-stoplists-for-full-text-search?view=sql-server-2017