注意:我正在使用 SQL 的全文搜索功能、CONTAINS 子句和所有 - * 是全文中的通配符,% 仅适用于 LIKE 子句.
我现在在多个地方读到 MS SQL 不支持“前导通配符”搜索(例如使用“*overflow”来匹配“stackoverflow”)。我正在考虑使用 CLR function to add regex matching ,但我很好奇人们可能还有哪些其他解决方案。
更多信息:You can add the asterisk only at the end of the word or phrase. - 以及我的经验经验:当匹配“myvalue”时,“my*”有效,但“(星号)value”返回不匹配,当执行简单的查询时:
SELECT * FROM TABLENAME WHERE CONTAINS(TextColumn, '"*searchterm"');
因此,我需要一个解决方法。我只在我的网站中的实际搜索页面上使用搜索 - 因此它的工作方式基本上与 Google 的工作方式相同(在 Joe Sixpack 类型的用户看来)。没那么复杂,但这种匹配确实不应该失败。
最佳答案
仅针对前导通配符的解决方法:
- 将反转的文本存储在不同的字段(或物化 View 中)
- 为此列创建全文索引
查找带有 * 的反转文本
SELECT * FROM TABLENAME WHERE CONTAINS(TextColumnREV, '"mrethcraes*"');
当然有很多缺点,只是为了快速解决...
更不用说 CONTAINSTABLE...
关于sql-server - 如何在 SQL Server 中使用前导通配符全文搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3400/