用MVC2写多引擎搜索

搜索引擎可以帮助我们找到需要的东西,但是选择搜索引擎成了一种喜好和赌博,应为你不知道你选的那个搜索引擎中是不是有你需要的答案,当你寻找无果时,换一个搜索引擎查找时就会遇到大量的重复信息,这个时候浪费了不少时间在这些无效的搜索结果中,如果再到第三个引擎那里去的话,会有更多的垃圾信息。

本人因为这个问题,又恰巧在学习MVC2的开发,就尝试做了一个多引擎搜索(必应、谷歌、百度),同时系统会帮忙剔除重复项,这样就最大化的获得我想要的资讯。

废话说了不少了,先给大家一个地址,去体验一下:http://www.chaoran44.com

 

接着说说实现吧,其实没什么技术含量,都不好意思拿出来,如果有高手来看,请指点。

整个程序工作原理就是根据用户请求从三个搜索引擎那里获得数据,然后从HTML代码中分离出需要的数据,然后按照URL剔除重复数据。顺便说一下这三个搜索引擎中必应的页面代码可读性最好,谷歌的页面代码那个叫乱啊,只有百度还在用table布局。程序类图如下

有了数据,接着就是输出了,我爱死MVC了,输出界面那个叫方便啊,看一下下面的代码就明白了,没什么好说的。我这里顺带用了MVC的AJAX,我觉得现在的搜索引擎搜索时平凡的翻页好麻烦的,我就直接把新的页面加载在之前的页面后面。

 

代码
1 <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<CRSearch.Models.ResultModel>" %>
2  <link href="http://www.cnblogs.com/Content/Seacrch.css" rel="stylesheet" type="text/css" />
3  <div class="Page">
4 <div>
5 &nbsp&nbsp&nbsp <%: Model.NowPage.ToString() %> &nbsp
6 </div>
7 <div class="Page2">
8 重复数量
9 <%: Model.RepeatItemCount%>
10 &nbsp&nbsp Baidu耗时
11 <%: Model.BiauSpan %>
12 &nbsp&nbsp Google耗时
13 <%: Model.GoogleSpan %>
14 &nbsp&nbsp Bing耗时
15 <%: Model.BingSpan %>
16 &nbsp&nbsp Analyze耗时
17 <%: Model.AnalyzeSpan%>
18 </div>
19  </div>
20  <div class="SEntry">
21 <%
22 List<CRSearch.Models.ResultEntry> items = Model.ResultEntrys;
23 foreach (var item in items)
24 { %>
25 <% if (item.FilchOK == false)
26 {
27 new HtmlString(item.Description);
28 continue;
29 }
30 %>
31 <img alt="<%: item.Source %>" src="/img/<%: item.Source %>.png" height="14px" width="43px" />
32 <a href="<%: item.Url %>" target="_blank" class="SLi">
33 <%: new HtmlString(item.Caption) %>
34 </a>
35 <% foreach (var repItem in item.RepeatEntry)
36 { %>
37 <br />
38 &nbsp&nbsp&nbsp&nbsp<img alt="<%: repItem.Source %>" src="/img/<%: repItem.Source %>.png"
39 height="14px" width="43px" />
40 <a href="<%: repItem.Url %>" target="_blank" class="REntry">
41 <%: new HtmlString(repItem.Caption)%>
42 </a>
43 <%} %>
44 <br />
45 <%: new HtmlString( item.Description) %>
46 <br />
47 <br />
48 <% } %>
49  </div>
50  <div class="Page">
51 <%
52 using (Ajax.BeginForm("SearchKey",
53 new AjaxOptions { UpdateTargetId = "S" + Model.NowPage, LoadingElementId = "Loading", HttpMethod = "Post" }))
54 { %>
55
56 <%: Html.Hidden ("key", Model.Key )%>
57 <%-- <%: Html.TextBox("page", Model.NowPage)%>--%>
58 <input type="hidden" id="page" name="page" value="<%: Model.NowPage %>" />
59 <%: Html.Hidden ("keyid", Model.KeyID )%>
60 <input type="submit" value="继续搜索" />
61 <% } %>
62  </div>
63  <div id="S<%: Model.NowPage %>">
64 <div class="Page" id="Loading" style="display: none">
65 搜索中...
66 </div>
67 </div>

 

posted @ 2011-01-11 14:48  超然  阅读(537)  评论(4编辑  收藏  举报