4

我们正在使用全文搜索来检查邮政编码和地址,我们发现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 秒:/ 有人有更好的解决方案吗?

4

1 回答 1

0

您使用的是 SQL Server 对吗?

从 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

于 2019-05-02T14:46:56.827 回答