gpt4 book ai didi

SQL Server Fulltext Search 包含词组问题

转载 作者:行者123 更新时间:2023-12-04 23:57:02 28 4
gpt4 key购买 nike

我的 SQL Server 2008 全文搜索有问题 我有以下查询

SELECT *
FROM cigars
WHERE CONTAINS(cigars.*, @Search )

@Search 是通过存储过程传入​​的值。但是,这不是问题。

什么是如果有人搜索说“Punch”它工作正常并且我得到所有匹配的雪茄。

问题在于,如果他们搜索“Punch Cigar”,我会收到此错误。

全文搜索条件“Punch Cigar”中“Cigar”附近的语法错误。

关于如何让它搜索该短语的任何想法?

最佳答案

为什么要按 CIGAR 表中的所有列进行搜索?当然其中一些不使用基于字符串/文本的数据类型...

After looking at the CONTAINS documentation ,我会看一个函数来正确转义 FTS 搜索的单词:

CREATE FUNCTION [dbo].[escapeFTSSearch] (
@SearchParameter NVARCHAR(MAX)
)
RETURNS NVARCHAR(MAX)
AS
BEGIN
-- Declare the return variable here
DECLARE @result NVARCHAR(MAX)

SELECT @result = '"'+ REPLACE(REPLACE(@SearchParameter,'"',''), ' ', '" AND "') +'"'

-- Return the result of the function
RETURN @result

END

测试:

SELECT [example].[dbo].[escapeFTSSearch] ('Punch Cigar')

...这给了我:

"Punch" AND "Cigar"

用法:

WHERE CONTAINS(cigars.*, dbo.escapeFTSSearch(@Search) )

附录

功能简单:

  • 它假定您想要提供所有单词
  • 不支持模糊搜索
  • 假设双引号不在参数值中

根据需要调整。

关于SQL Server Fulltext Search 包含词组问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3672644/

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