gpt4 book ai didi

c# - 将全文搜索与 SQL Server 合并有多难?

转载 作者:可可西里 更新时间:2023-11-01 08:16:07 25 4
gpt4 key购买 nike

我正在构建一个带有 SQL 后端的 C#/ASP.NET 应用程序。我在截止日期前完成了我的页面,在左侧字段中,我的一位设计师在我的一个页面上加入了全文搜索。到目前为止,我的“搜索”一直是过滤器,能够通过某些因素和列值缩小结果集。

因为我在截止日期前(你知道每晚睡 3 个小时,在这一点上我看起来像猫吃了然后吐出来的东西),我希望这个页面与其他页面非常相似,我我正在考虑要不要发出臭味。我以前从未在页面上进行过全文搜索......这是一座需要翻越的山还是有一个简单的解决方案?

谢谢。

最佳答案

首先,您需要在生产服务器上启用全文搜索索引,因此如果这不在范围内,您就不会想要这样做。

但是,如果这已经准备就绪,则全文搜索相对简单。

T-SQL 有 4 个谓词用于全文搜索:

  • 自由文本
  • 自由文本
  • 包含
  • 包含

FREETEXT 是最简单的,可以这样做:

SELECT UserName
FROM Tbl_Users
WHERE FREETEXT (UserName, 'bob' )

Results:

JimBob
Little Bobby Tables

FREETEXTTABLE 与 FreeTEXT 的工作方式相同,只是它以表格形式返回结果。

T-SQL 的全文搜索的真正力量来自 CONTAINS(和 CONTAINSTABLE)谓词...这个很大,所以我将其用法粘贴到:

CONTAINS
( { column | * } , '< contains_search_condition >'
)

< contains_search_condition > ::=
{ < simple_term >
| < prefix_term >
| < generation_term >
| < proximity_term >
| < weighted_term >
}
| { ( < contains_search_condition > )
{ AND | AND NOT | OR } < contains_search_condition > [ ...n ]
}

< simple_term > ::=
word | " phrase "

< prefix term > ::=
{ "word * " | "phrase * " }

< generation_term > ::=
FORMSOF ( INFLECTIONAL , < simple_term > [ ,...n ] )

< proximity_term > ::=
{ < simple_term > | < prefix_term > }
{ { NEAR | ~ } { < simple_term > | < prefix_term > } } [ ...n ]

< weighted_term > ::=
ISABOUT
( { {
< simple_term >
| < prefix_term >
| < generation_term >
| < proximity_term >
}
[ WEIGHT ( weight_value ) ]
} [ ,...n ]
)

这意味着您可以编写如下查询:

SELECT UserName
FROM Tbl_Users
WHERE CONTAINS(UserName, '"little*" NEAR tables')

Results:

Little Bobby Tables

祝你好运:)

关于c# - 将全文搜索与 SQL Server 合并有多难?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/202440/

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