您的位置:首页 > 其它

Lucene初学(二)

2015-12-04 22:16 246 查看
本博文将以叙事性的方式描述我的lucene学习过程,以此记录我的学习流程(也可以给读者作为参考。每周更新一次)


唠叨:2015年12月3日,到目前为止我已经学习lucene有两周多了,为什么我上周我没发《Lucene初学(二)》呢?因为我困在了lucene的实现上。我已经学习到《Lucene搜索引擎开发进阶实战》的第7章了,上周就已经学习到那。那里刚好开始讲解网站的lucene实现,所以我先是花了点时间去回忆JavaWeb。但由于一时回忆不起来,这么一周就过去了。(血淋淋的教训啊。。以后学习新技术别乱将不熟练的技术加进去,专心点)

今天讲解的内容涉及一些前置知识,未学过的,稍微跳过web实现部分吧。

前置知识:html+css+JavaScript,JQuery,Ajax,jsp,servlet,json,jdbc,MySQL,maven

开始:

今天的主题是“Lucene在web的实现”,目录如下:

1,lucene在web端的用途

2,lucene如何融入web

2.5,业务需求(自定义)

3,前期准备

4,如何安排步骤

5,经验总结

1,lucene在web端的用途

答:我是这么认为的,lucene不是一款完整的技术,他相当于一个工具盒。所以在页面提供关键字、条件等的输入,在后台利用lucene进行建立索引、搜索索引、组织信息等操作,然后将查询到的信息返回页面。如:百度、必应、google、知乎等。

2,lucene如何融入web

答:就我目前学习到的,

①可以在web创建之前,利用Indexer进行建立索引(如果时爬虫类的应用,或者更新型的,另当别论)。

②在提供关键字后,利用Searcher进行搜索索引,返回信息

2.5,业务需求(自定义)

答:

1,为数据库创建索引

2,通过网页输入关键字,将关键字传到后台分析后

3,搜索索引相关的信息

4,将信息回传到界面

5,显示多条结果

3,前期准备

答:

硬件:

1,编辑设备:联想笔记本电脑一台

软件:

1,数据库:MySQL最新版(轻量快捷)

2,开发工具:MyEclipse 2015 stable2.0,maven(带有自动下载jar包的功能)

3,使用技术:JQuery(使用最新版,暂时不考虑网页兼容性)+html+css+javascript+jsp,servlet(比较熟练),jdbc,json

4,做界面:直接用记事本Notepad++(速度快)

5,相关jar包:MySQL驱动,lucene-core,lucene-analysis,lucene-parser,org.json,servlet-api,junit

6,相关文件:jquery.js,json2.js

7,服务器:Tomcat8(目前仅有)

8,浏览器:google chrome(暂不考虑兼容性)

4,如何设计步骤

答:

-1,绘制总体格局图(从前端到后台,再到数据库)

-2,数据库准备数据

-3,制作界面

-4,后台分包

-5,分析实体,并创建相应的实体

-6,设计相关的model,util,service,servlet

-7,前端后台连接

-8,完善后台

-9,测试test

-10,发布到服务器

-11,访问

5,经验总结

答:

①别在做项目时,用自己感觉生疏的工具(适合的,才是最好的)

②先指定计划,一步一步地推进(MVC)

③给自己一个deadline。其实我上面的网站是花了1天做出来的,很简陋吧?但又很多时间都浪费在杂事上,所以要有一个deadline

下面是代码咯,我也会一步步地引导做出一个小网站,目录如下:

1,分析好上述的业务需求,最好是绘制出运作图。(以便理清思路,以及从宏观上掌握流程。我就不上图了,CSDN弄不来)

2,准备好上述的“前期准备”。(打战,粮草先行)

3,界面设计与数据库的配置可以同步进行。

界面代码index.html(json2.js是一个js解析json格式数据的文件,百度一下就有):

<html>
<head>
<meta charset="UTF-8" />
<title>搜索引擎</title>
<script type="text/javascript" src="../js/jquery-2.1.4.min.js"></script>
<script type="text/javascript" src="../js/json2.js"></script>
<script type="text/javascript">
function search() {
$.ajax({
url : "../SearchServlet", //请求的url
data : {
keyword : $("#keyword").val()
}, //json格式
datatype : "text", //返回的数据类型
type : "post", //请求的方式
success : function(data) { //请求成功后执行的回调函数,data为返回的数据
$("#outcome").html("");
var outcome = JSON.parse(data);
for (i = 0; i < outcome.length; i++) {
$("#outcome").append(
"用户名: " + outcome[i].username + "<br>信息:"
+ outcome[i].content + "<br><br>");
}
if (outcome.length == 0) {
$("#outcome").append("没有结果o(╯□╰)o");
}
}
});
}
</script>
</head>
<body>
<h1>搜索引擎</h1>
<h6 style="color:red">请在下方输入关键词</h6>
<input type="text" id="keyword" />
<input type="button" value="搜索一下" onclick="search()" />
<br>
<br>
<br>
<h3>结果:</h3>
<div id="outcome"></div>
</body>
</html>


数据库可以随意一点,在这里我设置的是:

数据库名:lucene_data

表名:t_user

表结构:

user_id:用户id,int,自增,主键

user_name:用户名,varchar

content:用户描述,varchar

当然,数据库还要插入一些数据。

4,后台设计,这里就要用到第一步时的业务逻辑图了,为了简单,我只使用了主要的三个类(其余类,我将简单描述,不作深入分析)。

Indexer:创建索引

Searcher:搜索索引

SearchServlet:主要的搜索入口

5,上面的代码都可以参照《Lucene搜索引擎开发进阶实战》,不过我的代码不是书上的,是自己写的,所以稍微有些不同。

所以,这一步主要是junit测试。

6,启动网站试一下吧!!!

下面是百度云中,我的代码:http://pan.baidu.com/s/1mhoOYzm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lucene web 搜索引擎