Lucene-索引数据库(补足六个汉字).doc
文本预览下载声明
PAGE
PAGE 8
Lucene 索引数据库(转载)
关键词: HYPERLINK /tag/Lucene \t _blank Lucene ?? HYPERLINK /tag/%CB%F7%D2%FD%CA%FD%BE%DD%BF%E2 \t _blank 索引数据库 ?? ??????????????????????????????????????
? Lucene,作为一种全文搜索的辅助工具,为我们进行条件搜索,无论是像Google,Baidu之类的搜索引擎,还是论坛中的搜索功能,还 是其它C/S架构的搜索,都带来了极大的便利和比较高的效率。本文主要是利用Lucene对MS Sql Server 2000进行建立索引,然后进行全文索引。至于数据库的内容,可以是网页的内容,还是其它的。本文中数据库的内容是图书馆管理系统中的某个作者表 -Authors表。
因为考虑到篇幅的问题,所以该文不会讲的很详细,也不可能讲的很深。
本文以这样的结构进行:
1.介绍数据库中Authors表的结构
2.为数据库建立索引
3.为数据库建立查询功能
4.在web界面下进行查询并显示结果
1.介绍数据库中Authors表的结构
字段名称???????? 字段类型???????? 字段含义
Au_id??????????????? Varchar(11)??? 作者号Au_name??????? Varchar(60)???? 作者名Phone???????????? Char(12)?????????? 电话号码Address????????? Varchar(40)????? 地址City?????????????????? Varchar(20)???? 城市State??????????????? Char(2)???????????? 省份Zip??????????????????? Char(5)???????????? 邮编contract??????????? Bit(1)??????????????? 外键(关系不大)
表中的部分内容:? 2.为数据库建立索引
首先建立一个类TestLucene.java。这个类就是对数据库进行建立索引,编写查询条件等。
当然,最开始就是建立数据库连接。连接代码这里就省略了。^_^
接着,新建一个方法getResutl(String),它返回的是数据库表Authors的内容。具体代码如下:
??? public ResultSet getResult(String sql){????? try{??????? Statement stmt = conn.createStatement();??????? ResultSet rs = stmt.executeQuery(sql);??????? return rs;????? }????? catch(SQLException e){??????? System.out.println(e);????? }????? return null;??? } 然后,为数据库建立索引。
首先要定义一个IndexWriter(),它是将索引写进Lucene自己的数据库中,它存放的位置是有你自己定义的。在定义 IndexWriter是需要指定它的分析器。Lucene自己自带有几个分析器,例 如:StandarAnalyzer(),SimpleAnalyzer(),StopAnalyzer()等。它作用是对文本进行分析,判断如何进行切 词。接着,要定义一个Document。Document相当于二维表中一行数据一样。Document里包含的是Field字段,Field相当于数据库中一列,也就是一个属性,一个字段。最后应该对IndexWriter进行优化,方法很简单,就是writer.optimize().具体代码如下:
? public void Index(ResultSet rs){????? try{??????? IndexWriter writer = new IndexWriter(d:/index/, getAnalyzer(), true);??????? while(rs.next()){??????????? Document doc=new Document();??????????? doc.add(Field.Keyword(id,rs.getString(au_id)));??????????? doc.add(Field.Text(name,rs.getString(au_name)));??????????
显示全部