首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 关于<上一篇>,<下一篇> [已结贴,结贴人:zengxie]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zengxie
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-05-21 18:05:59 楼主
    在新闻系统中,经常有看了这篇新闻后有上一篇和下一篇是什么的链接,这是怎么在数据库中查找上一条记录和下一条记录的,假如我的数据库中ID号不是递增的呢,怎么查
    ,还有就是一些相关新闻,这样的模糊查询是怎么写的
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • amandag
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 2

      5

    发表于:2008-05-21 18:11:371楼 得分:40
    经常有看了这篇新闻后有上一篇和下一篇是什么的链接
    ==
    这个肯定不是按ID号,要按新闻发表时间


    还有就是一些相关新闻,这样的模糊查询是怎么写的
    ==
    这个有些头疼,应该要用分词搜索
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zengxie
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-21 18:18:402楼 得分:0
    引用 1 楼 amandag 的回复:
    经常有看了这篇新闻后有上一篇和下一篇是什么的链接
    ==
    这个肯定不是按ID号,要按新闻发表时间


    还有就是一些相关新闻,这样的模糊查询是怎么写的
    ==
    这个有些头疼,应该要用分词搜索

    怎么做分词搜索呢
    给我个代码看看,谢谢
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lfywy
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-21 19:20:003楼 得分:40
    cs代码:
    C# code
    protected string constr; protected string Title; protected string fbTime; protected string content; protected string ID; protected string jigou; protected string s_id;//上一篇文章 protected string s_title; protected string x_id;//下一篇文章 protected string x_title; protected int wenz_type = 15; protected string sitename = rootpath.sitename; protected void Page_Load(object sender, EventArgs e) { ID = Request.QueryString["id"]; addstring(); setwenz(); } private void addstring() { constr = System.Configuration.ConfigurationSettings.AppSettings.Get("jdfbdata"); DataTable dt = (new LOGIC.DataAccess(constr)).RunSqlDT("select title,fabutime,content,jigou from news where id =" + ID); if (dt.Rows.Count > 0) { Title = dt.Rows[0]["title"].ToString(); fbTime = dt.Rows[0]["fabutime"].ToString(); content = dt.Rows[0]["content"].ToString(); jigou = dt.Rows[0]["jigou"].ToString(); } } private void setwenz() { if (wenz_type > 0) { string sql = "select top 1 id,title from news where category='" + wenz_type.ToString() + "'and fabutime>'" + fbTime + "' order by fabutime";//上一篇sql string sql2 = "select top 1 id,title from news where category='" + wenz_type.ToString() + "'and fabutime<'" + fbTime + "' order by fabutime desc";//下一篇sql DataTable dt = (new LOGIC.DataAccess(constr)).RunSqlDT(sql); if (dt.Rows.Count > 0) { s_id = "gdfx.aspx?id=" + dt.Rows[0]["id"].ToString(); s_title = dt.Rows[0]["title"].ToString(); } else { s_title = "无最新文章"; s_id = "#"; } dt = (new LOGIC.DataAccess(constr)).RunSqlDT(sql2); if (dt.Rows.Count > 0) { x_id = "gdfx.aspx?id=" + dt.Rows[0]["id"].ToString(); x_title = dt.Rows[0]["title"].ToString(); } else { x_title = "无文章"; x_id = "#"; } } }

    aspx代码:
    HTML code
    .... <body> <table background="../images/bg.gif" width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td height="15"> </td> </tr> <tr> <td> <table width="95%" align="center" border="1" bordercolordark="#FFFFFF" bordercolorlight="#898989" cellspacing="0" cellpadding="0"> <tr> <td> <table align="center" width="100%" bgcolor="#ffffff" border="0" cellspacing="0" cellpadding="8"> <tr> <td align="center" class="biaoti"><font size=3 color=red type="黑体"> <%=Title%></font> </td> </tr> <tr> <td align="center"> <table width="90%" border="0" cellspacing="0" cellpadding="0"> <tr> <td bgcolor="#898989" height="1"> </td> </tr> </table> </td> </tr> <tr> <td valign=top height=530><%=content%> </td> </tr> <tr> <td height="20"> <span style="color: #ff0033">发布时间</span>:<%=fbTime%> </td> </tr> <tr> <td style="height: 20px"> <span style="color: #ff0033">发布单位</span>:<%=jigou%> </td> </tr> <tr> <td style="height: 30px" valign=bottom> <span style="color: #ff0033">上一篇</span>:<a href="<%=s_id %>" target=_self><%=s_title%></a> </td> </tr> <tr> <td style="height: 30px" valign=bottom> <span style="color: #ff0033">下一篇</span>:<a href="<%=x_id %>" target=_self><%=x_title%></a> </td> </tr> <tr> <td align="center"> <input type="button" value="关闭" onclick="window.close()"> </td> </tr> </table> </td> </tr> </table> </td> </tr> <tr> <td height="15"> </td> </tr> </table> </body> ...

    希望对你有帮助!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • amandag
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 2

      5

    发表于:2008-05-21 19:23:234楼 得分:0
    怎么做分词搜索呢
    ==
    这个不是我一两句话能说明白的,楼主google一下分词比较好
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kent55782
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-21 19:25:465楼 得分:5
    4楼是我的老师 我简单说下我的分页 希望对你有帮助

    create proc Paging
    (
    @beginid int,
    @endid int
    )
    as
    Declare @News table
    (
    RowNumber int,
    NewsId int,
    Did int,
    NewsName varchar(100),
    [Time] varchar(40),
    Author varchar(20),
    ClickTime int,
    NewsDetails varchar(6000),
    NewsPictureUrl varchar(60),
    Oid int default(0)
    )
    insert into @news
    select Row_Number() over (order by news.newsid),
    NewsId,Did,NewsName,[Time],Author,ClickTime,NewsDetails,
    NewsPictureUrl,Oid from news where did=1
    select rownumber,newsid,Time, case when len(newsname) <18 then newsname else  substring(newsname,0,18)+'...' end as newsname from @news where RowNumber>=@beginid and RowNumber <=@endid
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chengqscjh
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-21 19:26:366楼 得分:5
    在新闻系统中,经常有看了这篇新闻后有上一篇和下一篇是什么的链接,这是怎么在数据库中查找上一条记录和下一条记录的,假如我的数据库中ID号不是递增的呢,怎么查
    ----------------------------------
    也可以为自增id,跟据id找最近的id也可以实现,直接用sql语句实现

    还有就是一些相关新闻,这样的模糊查询是怎么写的
    ---------------------
    相关新闻我认为现在一般都是基于关键词和tag上的模糊匹配搜索,用的like% %等,现在感觉用全文的分词搜索估计比较少见,一般的网站吃不消
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lfywy
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-21 19:27:387楼 得分:0
    不管怎么样都要在SQL语句里加order by fabutime这样就可以按时间了,不过,读取时还是按主键ID来搜取,这个就简单了 ,只是SQL语句处理下就可以了!所以这个很简单的问题,楼主好好看看我上面的代码!这是我在项目里就是这样用的!要求的和你一样!希望能帮助你或是给你启发!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zengxie
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-21 19:41:148楼 得分:0
    引用 7 楼 lfywy 的回复:
    不管怎么样都要在SQL语句里加order by fabutime这样就可以按时间了,不过,读取时还是按主键ID来搜取,这个就简单了 ,只是SQL语句处理下就可以了!所以这个很简单的问题,楼主好好看看我上面的代码!这是我在项目里就是这样用的!要求的和你一样!希望能帮助你或是给你启发!

    谢谢你的回复,不过我最想要的是分词搜索,因为 <上一篇>, <下一篇>的问题一说我就知道怎么做了,不过结贴时你一定有分,谢谢你的回帖
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lfywy
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-21 19:58:379楼 得分:0
    分是无所谓的!最主要解决你的问题,我知道那种烦恼的问题没得到答案的煎熬!累!
    其实分词检索也是可以的,不过最好是检索完选择性筛选,否则加入上万条,数据量大了会影响到速度和性能!所以我个人不提倡用like,最好可以在模糊中定唯一性!这样是最好的!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • amandag
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 2

      5

    发表于:2008-05-21 20:02:0110楼 得分:0
    引用 6 楼 chengqscjh 的回复:
    相关新闻我认为现在一般都是基于关键词和tag上的模糊匹配搜索,用的like% %等,现在感觉用全文的分词搜索估计比较少见,一般的网站吃不消


    这个是肯定的,楼主有自己的关键字库否
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zengxie
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-21 21:18:5211楼 得分:0
    引用 10 楼 amandag 的回复:
    引用 6 楼 chengqscjh 的回复:
    相关新闻我认为现在一般都是基于关键词和tag上的模糊匹配搜索,用的like% %等,现在感觉用全文的分词搜索估计比较少见,一般的网站吃不消


    这个是肯定的,楼主有自己的关键字库否

    问题是我没有呀,给我个代码学习一下呀
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Jinglecat
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 2

      2

    发表于:2008-05-21 21:35:3912楼 得分:0
    学习
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kongwei521
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-21 21:45:2613楼 得分:10
    C# code
    #region// 取出上一篇下一篇文章 public void BindNextUp() { showID=Request.QueryString["show"]; if(showID!=null) { DataTable dtnextup = new DataTable(); string strNextUp = "select * from (select top 1 Postid,title from dbo.bbs_spaceposts where postid>case when (select count(*) "; strNextUp += " from dbo.bbs_spaceposts where postid > " + showID + ") > 0 then " + showID + " else " + showID + " - 1 end order by postid)as a union "; strNextUp +=" select * from (select top 1 Postid,title from dbo.bbs_spaceposts where postid< case when "; strNextUp += " (select count(*) from dbo.bbs_spaceposts where postid < " + showID + ") > 0 then " + showID + " else " + showID + " + 1 end order by postid desc) as b "; sqls.Fill_DT(strNextUp,dtnextup); if(dtnextup.Rows.Count>0) { this.up.Text = "<a href=SpaceLogView.aspx?show=" + dtnextup.Rows[0]["postid"].ToString() + ">" + dtnextup.Rows[0]["title"].ToString() + "</a>"; for (int i = 0; i < dtnextup.Rows.Count; i++) { int upid = Convert.ToInt32(dtnextup.Rows[i]["postid"].ToString()); //判断传递的ID大小来显示上一篇下一篇 if (upid == Convert.ToInt32(showID))//查询ID相等的 { this.netx.Text = "<a href=SpaceLogView.aspx?show=" + dtnextup.Rows[i]["postid"].ToString() + ">" + dtnextup.Rows[i]["title"].ToString() + "</a>"; } else if (upid < Convert.ToInt32(showID))//查出ID小于ShowID的 { this.up.Text = "<a href=SpaceLogView.aspx?show=" + dtnextup.Rows[i]["postid"].ToString() + ">" + dtnextup.Rows[i]["title"].ToString() + "</a>"; } else { this.netx.Text = "<a href=SpaceLogView.aspx?show=" + dtnextup.Rows[i]["postid"].ToString() + ">" + dtnextup.Rows[i]["title"].ToString() + "</a>"; } } } } }

    HTML code
    <div style="margin: 4px; border: 1px dashed #FF99FF;width:99%;background-color:#FF99FF;" > <div style="float: left" class="tabletitle">&nbsp;&nbsp; « 上一篇:【<asp:Label ID="up" runat="server" ></asp:Label></div> <div align="right">下一篇:【<asp:Label ID="netx" runat="server" ></asp:Label>&nbsp;&nbsp;</div> </div>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kongwei521
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-21 21:47:2314楼 得分:0
    相关的判断都做了。例如只有ID 1,2那上一篇的ID还是1,下一篇的是2.一次类推。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • treesky
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-21 22:03:1815楼 得分:0
    还有就是一些相关新闻,这样的模糊查询是怎么写的
    ==
    简单点做就是查询新闻标题Sql来匹配。 %匹配%
    修改 删除 举报 引用 回复
    进入用户个人空间