C# 如何在数据库中进行全文搜索
我的c#应用程序调用名为Search的sql存储函数,并传递一些搜索词。我正在使用EasyFTS图书馆,这里有: 因此,应用程序传递一个搜索词,存储函数处理它,并返回搜索结果 我的表值函数如下所示:C# 如何在数据库中进行全文搜索,c#,tsql,asp.net-core-mvc,C#,Tsql,Asp.net Core Mvc,我的c#应用程序调用名为Search的sql存储函数,并传递一些搜索词。我正在使用EasyFTS图书馆,这里有: 因此,应用程序传递一个搜索词,存储函数处理它,并返回搜索结果 我的表值函数如下所示: ALTER FUNCTION [dbo].[Search] ( @locale NVARCHAR(10), @searchTerm NVARCHAR(450) ) RETURNS @retSearch TABLE ( [Id] INT NOT NULL,
ALTER FUNCTION [dbo].[Search]
(
@locale NVARCHAR(10),
@searchTerm NVARCHAR(450)
)
RETURNS
@retSearch TABLE
(
[Id] INT NOT NULL,
[Table] NVARCHAR(100) NOT NULL,
[Title] NVARCHAR(MAX) NOT NULL,
[Summary] NVARCHAR(MAX) NOT NULL,
[Rank] INT NOT NULL,
[Parameters] NVARCHAR(MAX) NOT NULL,
PRIMARY KEY ([Id],[Table])
)
AS
BEGIN
IF @locale = N''
BEGIN
SET @locale = N'en'
END
INSERT @retSearch
SELECT Id,[Table],[Title],[Summary], RANK [Rank],[Parameters]
FROM dbo.FTSData EP
INNER JOIN
CONTAINSTABLE(dbo.FTSData,Content,
@searchTerm) AS KEY_TBL
ON EP.IdFtsData = KEY_TBL.[KEY]
WHERE EP.LocaleId=@locale
ORDER BY RANK DESC
RETURN
END
问题是搜索结果无法搜索部分单词。
示例:FORMSOF(屈折,powershe)找不到包含powershell一词的内容
我尝试使用LIKE并在函数中添加一个新变量,并在搜索值的两侧连接%
设置@searchTermFun='%'+@searchTerm+'%',这在数据库端(SSMS)工作。
但是当我尝试在我的函数中实现它时,它不起作用。中的问题是否稳定
测试示例:
DECLARE @SearchTerm AS NVARCHAR(50), @locale AS NVARCHAR(10), @searchTermFun AS NVARCHAR(450)
SET @SearchTerm = 'course'
SET @SearchTermFun = '%'+@SearchTerm+'%'
SET @locale = 'en'
SELECT Id,[Table],[Title],[Summary],[Parameters], LocaleId
FROM dbo.FTSData EP
WHERE EP.LocaleId=@locale AND Content LIKE @SearchTermFun
ORDER by [Table] DESC
找到了一个解决方案,我在.NET核心应用程序中使用StringBuilder类在搜索字符串的末尾添加了一个星号(*)。它解决了我的问题 本页对此进行了说明:
无论如何,谢谢全文搜索不是为部分单词设计的,不知道你为什么会这样想。此外,如果使用内联TV函数
将表作为返回(选择…
返回),而不是多语句函数,它的性能可能会更好