gpt4 book ai didi

sql-server - SQL Server ContainsTable 不返回以 "N"开头的单词的结果

转载 作者:行者123 更新时间:2023-12-03 11:22:17 26 4
gpt4 key购买 nike

我想进行查询以检索具有 NEAR 语法的人。当我搜索第二个单词中包含字母 N 的任何文本时,结果始终为空。

我有两个人 Ricardo 在 table 上登记,“Ricardo Mova”和“Ricardo Nova”。如果搜索 'Ricardo NEAR "Mova*"' 没问题,但不是搜索 'Ricardo NEAR 'Nova*'

编辑

  • 4 条记录(Ricardo Nova、Ricardo Novais、Ricardo Novo、Ricardo Nunes)
  • 查询 'Ricardo NEAR 'N*'
  • 结果仅显示“Ricardo Novais”和“Ricardo Nunes”。

  • 表:
    CREATE TABLE [dbo].[EntitySearch](
    [IdEntity] [int] NOT NULL,
    [Name] [nvarchar](max) NULL,
    [Accessibility] [bit] NOT NULL,
    [Document] [nvarchar](max) NULL,
    [Email] [nvarchar](max) NULL,
    [Phone] [nvarchar](max) NULL,
    [Phone2] [nvarchar](max) NULL,
    [Birthdate] [datetime] NULL,
    [Gender] [int] NULL,
    [IsAct] [bit] NOT NULL,
    [Discriminator] [int] NOT NULL,
    CONSTRAINT [PK_dbo.EntitySearch] PRIMARY KEY CLUSTERED
    (
    [IdEntity] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

    目录
    CREATE FULLTEXT CATALOG main_catalog;

    完整索引
    CREATE FULLTEXT INDEX ON dbo.EntitySearch 
    ( [Name]
    Language[Brazilian],
    [Document]
    Language[Brazilian],
    [Email]
    Language[Brazilian],
    [Phone]
    Language[Brazilian],
    [Phone2]
    Language[Brazilian] )
    KEY INDEX [PK_dbo.EntitySearch] ON main_catalog;

    查询:
    SELECT top 10
    FT_TBL.[IdEntity]
    ,FT_TBL.[Name]
    ,FT_TBL.[Accessibility]
    ,FT_TBL.[Document]
    ,FT_TBL.[Email]
    ,FT_TBL.[Phone]
    ,FT_TBL.[Phone2]
    ,FT_TBL.[Birthdate]
    ,FT_TBL.[Gender]
    ,FT_TBL.[IsAct]
    ,FT_TBL.[Discriminator]
    FROM [EntitySearch] AS FT_TBL INNER JOIN
    CONTAINSTABLE ([EntitySearch], [Name], 'Ricardo NEAR "Nova*"' ) AS KEY_TBL
    ON FT_TBL.[IdEntity] = KEY_TBL.[KEY]
    WHERE
    FT_TBL.[IsAct] = 1
    and FT_TBL.[Discriminator] = 2
    and KEY_TBL.RANK > 10
    ORDER BY KEY_TBL.RANK DESC, FT_TBL.[Name]

    我希望显示 1 条记录,但没有显示。谢谢!

    编辑:解决方法

    我用葡萄牙语删除并重新创建了全文索引。问题已经消失了,所以我猜“错误”是在巴西语言上的索引。

    最佳答案

    这不是BUG。

    每个语言都有你的自停用词列表,这意味着有些词与索引搜索无关。

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

    SELECT * 
    FROM sys.fulltext_system_stopwords
    WHERE language_id = 1046 --Brazilian language ID

    所以,就我而言,我做了一个算法,在发送之前更正搜索查询。

    关于sql-server - SQL Server ContainsTable 不返回以 "N"开头的单词的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54478757/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com