开发者社区> 问答> 正文

如何使领先的通配符全文本搜索在SQL Server中起作用?

注意:我正在使用SQL的全文本搜索功能,CONTAINS子句以及所有-*是全文本的通配符,%仅用于LIKE子句。

我现在已经在多个地方阅读过,MS SQL不支持“前导通配符”搜索(例如,使用“ * overflow”匹配“ stackoverflow”)。我正在考虑使用CLR函数添加正则表达式匹配,但我很想知道人们可能还有其他解决方案。

更多信息:您只能在单词或短语的末尾添加星号。-以及我的经验:匹配“ myvalue”时,“ my *”有效,但是执行以下查询时,“(星号)value”不返回匹配项:

SELECT * FROM TABLENAME WHERE CONTAINS(TextColumn, '"*searchterm"');

因此,我需要一种解决方法。我只在网站上的实际搜索页面上使用搜索-因此它的工作方式基本上与Google的工作方式相同(在Joe Sixpack类型的用户看来)。几乎没有那么复杂,但是这种匹配确实不应该失败。

展开
收起
心有灵_夕 2019-12-24 21:47:29 935 0
1 条回答
写回答
取消 提交回答
  • 解决方法仅适用于前导通配符:

    将反转的文本存储在其他字段(或实体化视图)中 在此列上创建全文索引 查找带有*的反向文本

    SELECT * 
    FROM TABLENAME 
    WHERE CONTAINS(TextColumnREV, '"mrethcraes*"');
    
    

    当然,有很多缺点,只是为了快速解决...

    更不用说CONTAINSTABLE了...

    2019-12-24 21:47:53
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server在电子商务中的应用与实践 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载