gpt4 book ai didi

sql-server - T-SQL 在 SQL Server 2008 R2 上包含搜索和德语变音

转载 作者:行者123 更新时间:2023-12-01 01:32:04 25 4
gpt4 key购买 nike

我在 SQL Server 2008 R2 上遇到了一个问题,我必须使用包含搜索而忽略德语元音字母(ä、ö、ü)。

对于所有非德语开发人员:
德语元音字母可以表示为常规的底层字母(使用 ä 时为 a)和 e。所以Müller和Mueller一样,Bäcker和Baecker一样。

我们想要做的是:
搜索“Müller”时,我们希望找到包含“Mueller”和“Müller”的数据,而在输入“Mueller”时,我们希望找到包含“Müller”和“Mueller”的条目。

使用 like 或 = 比较数据时,您只需附加 COLLATE German_PhoneBook_CI_AI。当使用包含全文索引的搜索时,这并不容易。
您可以将重音敏感度设置为关闭,但是包含搜索将 ü-字母视为 u,将 ä-字母视为 a,将 ö 字母视为 o,它不会找到包含 oe 而不是 ö, ue 的条目代替 ü 和 ae 代替 ä。

将列上的排序规则设置为“German_Phonebook_CI_AS”或“German_Phonebook_100_CI_AS”似乎也无济于事。

有没有人遇到过同样的问题?

最佳答案

您应该按照以下步骤操作:

  • 创建具有重音敏感度的全文目录
  • 创建指定德语的全文索引
  • 查询时使用 'FORMSOF(INFLECTIONAL,yourquery)'

  • 请参阅以下示例:
    CREATE TABLE MyTable (
    ID int IDENTITY CONSTRAINT PK_MyTable PRIMARY KEY,
    Txt nvarchar(max) COLLATE German_PhoneBook_100_CI_AI NOT NULL
    )

    INSERT INTO dbo.MyTable
    VALUES (N'Müller'), (N'Mueller'), (N'Muller'), (N'Miller')

    GO
    CREATE FULLTEXT CATALOG FTSCatalog WITH ACCENT_SENSITIVITY=ON AS DEFAULT
    CREATE FULLTEXT INDEX ON MyTable (Txt LANGUAGE German) KEY INDEX PK_MyTable
    GO
    WHILE EXISTS (
    SELECT * FROM sys.dm_fts_index_population
    WHERE database_id=DB_ID()
    AND status<>7
    ) WAITFOR DELAY '0:0:1'

    GO
    SELECT * FROM CONTAINSTABLE(dbo.MyTable,Txt,N'FORMSOF(INFLECTIONAL,Müller)')
    SELECT * FROM CONTAINSTABLE(dbo.MyTable,Txt,N'FORMSOF(INFLECTIONAL,Muller)')
    SELECT * FROM CONTAINSTABLE(dbo.MyTable,Txt,N'FORMSOF(INFLECTIONAL,Mueller)')

    GO
    DROP FULLTEXT INDEX ON MyTable
    DROP FULLTEXT CATALOG FTSCatalog
    GO
    DROP TABLE dbo.MyTable

    关于sql-server - T-SQL 在 SQL Server 2008 R2 上包含搜索和德语变音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4192525/

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