gpt4 book ai didi

sql-server - 全文搜索适合搜索人名吗?

转载 作者:行者123 更新时间:2023-12-02 16:46:43 25 4
gpt4 key购买 nike

我有一个用户表,其中只有一个人名列:

CREATE TABLE [dbo].[Users]
(
Id bigint NOT NULL,
Name nvarchar(80) NOT NULL,
PRIMARY KEY CLUSTERED (Id ASC)
)

Name 列可以包含全名或仅包含名字或任何实际名称(以空格分隔)。为了实现对Name的搜索,我想利用SQL的全文搜索,但不确定它是否适合搜索姓名/昵称而不是实际单词。还有一个问题是 - 在 Name 上创建 FT 索引时我应该选择哪种语言?

还有其他考虑吗?

谢谢。

最佳答案

乍一看,我建议使用 LIKE 运算符而不是全文查询。

确保您的搜索不区分大小写,并且可能不区分重音。这可以通过在服务器、数据库、表列或查询中设置正确的排序规则来实现。在查询中,这是通过以下方式完成的:

SELECT *
FROM [dbo].[Users]
WHERE Name LIKE '%niaher%' COLLATE SQL_Latin1_General_CP1_CI_AI

如果您使用全文索引,您将获得各种功能,例如动词词干和同义词库,请参阅 Linguistic Components and Language Support in Full-Text Search ,在名称列表中搜索时不需要。顺便说一句,这些功能依赖于语言,这就是您在全文索引上指定语言的原因。

您甚至可能想避免应用非索引字表。至少我会,因为在荷兰语中,许多姓氏都以冠词和/或介词开头:“Rembrandt van Rijn”。 “van”肯定会出现在荷兰语非索引字列表中,并阻止包含“van”的搜索词的任何匹配。

如果遇到性能问题,尝试全文索引并使用 CONTAINS with a simple term 进行搜索可能会很有用。 .

SELECT *
FROM [dbo].[Users]
WHERE CONTAINS(Name, 'niaher')

请注意,全文索引是异步更新的。

关于sql-server - 全文搜索适合搜索人名吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13438936/

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