佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1110|回复: 0

这是一个Sql 的Syntax, 用来做ranked search的,可是我有问题.

[复制链接]
阿牙木 该用户已被删除
发表于 4-10-2007 11:24 PM | 显示全部楼层 |阅读模式
假设你有一个table 叫 Sequence
里面有一百个record, 只有一个column 叫Sequence.seq, value是从一到一百.

现在你有一个叫Article的table, 其中里面有个叫Article.TextBody的column,是你用来将文章内容存储的地方. 在这里, 以下这个syntax 可以做ranked search...

所谓的ranked search, 就是你给它一个@Keywords,它可以让你知道哪一个record 被referenced 的次数最多.

Declare @Keywords varchar(2000)
Select @Keywords = 'my space delimited string'


        Select ArticleID, ArticleTitle, ArticleDescription, count(AA_ID) hits
        FROM SEQUENCE
        INNER JOIN Articles ON Articles.ArticleBody like '%' +  
                Substring(' ' + @keywords + ' ',seq,
                CharIndex(' ' , ' ' + @keywords + ' ' , seq) - seq)
                + '%'
       
        WHERE
         seq <= len(' ' + @keywords + ' ') and
         Substring(' ' + @keywords + ' ', seq - 1, 1) = ' ' and
         CharIndex(' ' , ' ' + @keywords + ' ' , seq) - seq > 0
       
        Group by ArticleID, ArticleTitle, ArticleDescription
       
        ORDER BY Hits DESC       



这小东西,我放在我的stored procedure 里,完全没有问题,可以跑.
可是它并不支援中文搜索.
我已经把所有相关的地方都换成NVARCHAR, 也在literal string 前加了个N, 请问我还少了什么?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 20-9-2025 04:45 AM , Processed in 0.136655 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表