Sar*_*pps 12 c# sql asp.net full-text-search .net-3.5
我正在构建一个带有SQL后端的C#/ ASP.NET应用程序.我正在截止日期并完成我的页面,在左侧字段中,我的一位设计师在我的一个页面上整合了全文搜索.直到此时我的"搜索"都是过滤器,能够通过某些因子和列值缩小结果集.
因为我正处于截止日期(你知道每晚睡3个小时,在我看起来像是吃了什么东西并且扔掉了),我期待这个页面与其他人非常相似,我正在尝试决定是否发臭.我以前从未在页面上进行过全文搜索....这是一座可以登山的山还是有一个简单的解决方案?
谢谢.
Fly*_*wat 27
首先,您需要在生产服务器上启用全文搜索索引,因此如果这不在范围内,您不会想要使用它.
但是,如果已经准备就绪,全文搜索相对简单.
T-SQL有4个谓词用于全文搜索:
FREETEXT是最简单的,可以这样做:
SELECT UserName
FROM Tbl_Users
WHERE FREETEXT (UserName, 'bob' )
Results:
JimBob
Little Bobby Tables
Run Code Online (Sandbox Code Playgroud)
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 ]
)
Run Code Online (Sandbox Code Playgroud)
这意味着您可以编写如下查询:
SELECT UserName
FROM Tbl_Users
WHERE CONTAINS(UserName, '"little*" NEAR tables')
Results:
Little Bobby Tables
Run Code Online (Sandbox Code Playgroud)
祝好运 :)
| 归档时间: |
|
| 查看次数: |
2327 次 |
| 最近记录: |