社区
Java EE
帖子详情
请教一个使用lucene做全文检索与数据库连接时的问题
birdboyqss
2004-07-31 04:26:44
lucene给的demo是针对文件夹的。那么在jsp环境下,使用lucene检索整个网站的信息,请
问如何与数据库交互(就是怎样看待数据库里的数据),最好给一个实例或者过程。^-^
下载了jive的源码,感觉好复杂。:)
...全文
244
3
打赏
收藏
请教一个使用lucene做全文检索与数据库连接时的问题
lucene给的demo是针对文件夹的。那么在jsp环境下,使用lucene检索整个网站的信息,请 问如何与数据库交互(就是怎样看待数据库里的数据),最好给一个实例或者过程。^-^ 下载了jive的源码,感觉好复杂。:)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
birdboyqss
2004-08-11
打赏
举报
回复
hehe ,我也看过了上面的代码就是不大清楚具体的实质,难道应该将建立索引的代码放到jsp中还是建一个cmd或sh,定时自动添加索引阿?
pigo
2004-08-01
打赏
举报
回复
建立索引的java代码:
package com.delphibbs.search;
import java.sql.*;
import org.apache.lucene.index.*;
import org.apache.lucene.document.*;
public class indexmysql {
public indexmysql() {
}
public static void main(String[] args) {
try {
long start = System.currentTimeMillis();
org.apache.lucene.index.IndexWriter writer = new org.apache.lucene.index.
IndexWriter("index",
// new org.apache.lucene.analysis.cjk.CJKAnalyzer(), true);
new org.apache.lucene.analysis.cn.ChineseAnalyzer(), true);
indexDocs(writer);
writer.optimize();
writer.close();
System.out.print(System.currentTimeMillis() - start);
System.out.println(" total milliseconds");
}
catch (Exception e) {
System.out.println(" 出错了 " + e.getClass() +
"\n 错误信息为: " + e.getMessage());
}
}
public static void indexDocs(IndexWriter writer) throws Exception {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=I:\\delphibbs\\DelphiBBS20030801-1031.mdb";
Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery(
"select ID,CONTENT from letters where ID<2077061");
//最初我是select all,上了次厕所回来之后,程序都还没有执行能够完,只好强行终止了。
////后来我只取了2000条记录出来,不过也还是花了两分多钟才把索引建立好。
while (rs.next()) {
writer.addDocument(com.delphibbs.search.mysqldocument.Document(
rs.getString("ID"), rs.getString("CONTENT")));
///只对id和帖子内容进行了建立索引
}
rs.close();
stmt.close();
conn.close();
}
catch (Exception ex) {
System.out.println("数据库操作有问题");
System.out.println(ex.getMessage());
ex.printStackTrace();
}
System.out.println("索引创建完毕");
}
}
/////////上面用到的mysqldocument.java
package com.delphibbs.search;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.DateField;
public class mysqldocument {
public static Document Document(String id,String content){
Document doc = new Document();
doc.add(Field.Keyword("ID", id));
doc.add(Field.Text("CONTENT", content));
return doc;
}
public mysqldocument() {
}
}
查询帖子的java文件:searchmysql.java
package com.delphibbs.search;
import org.apache.lucene.document.Document;
import org.apache.lucene.search.Searcher;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.Hits;
import org.apache.lucene.analysis.cn.ChineseAnalyzer;
import org.apache.lucene.queryParser.QueryParser;
public class searchmysql {
public searchmysql() {
}
public static void main(String[] args) {
try {
Searcher searcher = new IndexSearcher("index");
ChineseAnalyzer analyzer = new ChineseAnalyzer();
//org.apache.lucene.analysis.cjk.CJKAnalyzer analyzer=new org.apache.lucene.analysis.cjk.CJKAnalyzer();
Query query = QueryParser.parse("游戏网站", "content", analyzer);
///上面的“游戏网站”即是需要查询的关键字
System.out.println("正在查找: " + query.toString("content"));
Hits hits = searcher.search(query);
System.out.println(hits.length() + " total matching documents");
java.text.NumberFormat format = java.text.NumberFormat.getNumberInstance();
for (int i = 0; i < hits.length(); i++) {
//开始输出查询结果
Document doc = hits.doc(i);
System.out.println(doc.get("ID"));
System.out.println("准确度为:" + format.format(hits.score(i) * 100.0) + "%");
System.out.println(doc.get("CONTENT"));
}
}
catch (Exception e) {
System.out.println(" 出错了 " + e.getClass() +
"\n 错误信息为: " + e.getMessage());
}
}
}
朋友别哭
2004-07-31
打赏
举报
回复
up
程序员面试个人简历.pdf,这是一份不错的文件
程序员面试个人简历.pdf,这是一份不错的文件
Elasticsearch
使用
误区之一——将 Elasticsearch 视为关系数据库!
Elasticsearch 是
一个
强大的工具,尤其在
全文检索
、实
时
分析、机器学习、地理数据应用、日志和事件数据分析、安全信息和事件管理等场景有大量的应用。然而,Elastic Stack 技术栈的选型及应用效能取决于正确的
使用
方式。选型错误或者误用 Elasticsearch 可能会导致扩展性
问题
、性能
问题
(如为解决
一个
问题
使用
非常复杂的脚本导致性能极差)等,从而使整体体验感变差。所以,本文区别于...
LUCENE
检索速度优化方案-与我很平凡交流经验(2)
2013-04-24 横瓜 19:26:03 但是用户体验绝对好 丶__我很平凡 19:26:12 我的路还长哦 横瓜 19:26:18 只要正文里面出现的,没有搜索不到的 横瓜 19:26:42 优化搜索是可以达到百度的效果 但是需要硬件配合 丶__我很平凡 19:27:00 你是专门搞这个的吗? 横瓜 19:27:09 目前没有那个精力去搞了 横瓜 1...
lucene
.net的一点知识
转:这个东西在2006年初,我就开始在项目中
使用
.我对它也有了一些了解. 但因为主要开发还是小兵们在
做
. 所以仅仅了解了一些皮毛. 下面我将以知识点的形式, 列出来. 以笔记的形式连载. 也方便大家一起学习. 每
一个
点, 我都会写
一个
知识点. 1, 2005年的
时
候, 听说了
lucene
. 是
一个
开源的搜索引擎开发包. 而不是
一个
搜索引擎,请切记. 2, 如果开始学习它, 就需要至少知道,它所包含...
Lucene
多字段,多关键字 查询
mysql 多字段模糊查询 MySQLJava 在最近的
一个
项目需要实现在单表中对多字段进行同一关键字的模糊查询,查了一下有点收获 Java代码 select * from table where `字段`='值' and concat(`title`,`content`) like '%关键字%' MySQL单表多字段模糊查询解决方法 2008-...
Java EE
67,543
社区成员
225,875
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章