经过接近半个月的努力,今天我总算完成了博客园找找看功能的大部分实现,说实话,干编程真是费脑细胞啊。我本着不能白干的原则来描述一下我
的本地模拟博客园找找看功能的实现。
首先我先说明一下我采用的结构,采用Lucene.net 2.9 作为全文检索的工具,并配合盘古分词进行中文分词。其实我当时是通过NuGet获取到的
Lucene.net 3.0 的最新版本,但是和盘古分词一起使用的时候出现了各种问题,无奈之下,只能采用Lucene.net 2.9,如果各位有更好的中文检索方
案,可以介绍一下。
网站的结构我就不说了,在前面的博客中我都介绍了,这里的重点就是Lucene.net。我通过这次认识到了一个问题,千万不要以为可以使用
Lucene.net建立索引就说你掌握了Lucene.net,其实每个框架包含的内容都是很多的。不是我们表面上看到的那么简单,希望大家不要浮躁,起码我就
有点浮躁。
通过Lucene.net进行查询,首先就是要建立索引,我这里建立了一个Windows 服务项目,用来承载自动化的定时执行创建索引的任务,定时框架采
用的就是Quartz.net,具体步骤我就不细说了,源码可以在codeplex上下载到。
建立了索引以后就是要进行查询,说实话,在建立索引的过程中倒是没有遇到太大的问题,但是在通过Lucene.net进行搜索的时候遇到的问题可是不
少,有机会我要总结一下了。其中我遇到了一个我从来没有遇到的问题,我在查询的时候,搜索到的结果竟然全部是相同的,这个我会慢慢找解决方法。我在搜索界面中采用的是分部视图的形式呈现,所以我个人感觉有更好的可重用性。
1 <div id="main">
2 <div id="searchResult">
3 <div style="clear: both">
4 </div>
5 <div id="forflow">
6 @{
7 Html.RenderPartial("~/views/search/zzk.cshtml", blogList);
8
9 }
10 </div>
11 </div>
12 </div>
分部视图页面代码部分。
1 @using Models
2 @model IList<Models.BlogInfo>
3 @{
4 IList<Models.BlogInfo> blogList = Model as IList<Models.BlogInfo>;
5 }
6 @{
7 if (blogList == null)
8 {
9 <div id="empty_result">
10 <img src="/images/empty-result.jpg">
11 <br>
12 抱歉!没有找到您搜索的相关内容。<br>
13 建议您:<br>
14 <ul>
15 <li>检查输入的关键词是否正确;</li>
16 <li>向园子的服务人员<a href="http://space.cnblogs.com/forum/public">反馈问题</a>;</li>
17 <li>去<a href="http://q.cnblogs.com/">博问</a>寻求园友的的帮助。</li>
18 </ul>
19 </div>
20 }
21 else
22 {
23 foreach (BlogInfo blogInfo in blogList)
24 {
25 <div class="searchItem">
26 <h3 class="searchItemTitle">
27 <a href="@blogInfo.LinkUrl" target="_blank"><strong>@blogInfo.Title</strong></a>
28 </h3>
29 <span class="searchCon">@blogInfo.BlogContent...</span>
30 <div class="searchItemInfo">
31 <span class="searchItemInfo-userName">@blogInfo.AuthorID</span>
32 <span class="searchItemInfo-publishDate">@blogInfo.PublishTime</span>
33 <span class="searchItemInfo-views">浏览(50000)</span>
34 </div>
35 <div class="searchItemInfo">
36 <span class="searchURL">@blogInfo.LinkUrl</span>
37 </div>
38 </div>
39
40 }
41
42
43 }
44
45 }
因为我是仿照博客园创建的这个项目,所以界面当然还是选择博客园的官方界面.
首先展示一下搜索主界面。
。然后展示一下,搜索的详细界面。我遇到的问题就在这里出现的。
总结一下,
- 千万不要对自己的能力估计太高,因为每个项目都有独特性,都会出现各种问题
- 有一点成绩我们就要自我安慰一下,毕竟前方的路不知在何方,安慰一下自己,继续上路
- 千万不要浮躁,原理性的东西更能带给我们处理问题的最好办法。知其然更要知其所以然
我又回来了,回到了技术最前线,