Lucene初学(二)

本博文将以叙事性的方式描述我的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="搜索一下" οnclick="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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值