package com.lucene.search;
import java.io.FileInputStream;
import java.io.IOException;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import jeasy.analysis.MMAnalyzer;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.MultiPhraseQuery;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.Searcher;
import org.apache.lucene.search.highlight.Formatter;
import org.apache.lucene.search.highlight.Fragmenter;
import org.apache.lucene.search.highlight.Highlighter;
import org.apache.lucene.search.highlight.QueryScorer;
import org.apache.lucene.search.highlight.Scorer;
import org.apache.lucene.search.highlight.SimpleFragmenter;
import org.apache.lucene.search.highlight.SimpleHTMLFormatter;
import sun.applet.Main;
import com.lucene.entity.Photo;
import com.sun.org.apache.bcel.internal.generic.IXOR;
import com.sun.org.apache.bcel.internal.generic.NEW;
public class SearchFile {
public static void search(Searcher searcher,String[] q) throws ParseException, IOException{
Analyzer analyzer = new StandardAnalyzer();
//把要搜索的文本解析Query
String[] fields = {"title","description","address","url"};
Query query = MultiFieldQueryParser.parse(q, fields,analyzer);
Hits hits =searcher.search(query);
System.out.println("hits-----------"+hits.length());
for(int i = 0; i<hits.length(); i++){
Document doc = hits.doc(i);
System.out.println(doc.get("photoId")+"====="+doc.get("uploadTime")+"====="+doc.get("address")+"======="+
doc.get("title")+"======"+doc.get("description")+"=---==-="+doc.get("tag")+
"==============="+doc.get("userName"));
}
}
public static List<Photo> search(Searcher searcher,String searchWord) throws ParseException, IOException{
List<Photo> list = new ArrayList<Photo>();
//Analyzer analyzer = new StandardAnalyzer(); 英文分词器
Analyzer analyzer = new MMAnalyzer(); //中文分词器
//把要搜索的文本解析Query
String[] fields = {"title","description","address","url"};
String[] fStrings = {};
QueryParser queryParser = new MultiFieldQueryParser(fields, analyzer);
Query query = queryParser.parse(searchWord);
Hits hits = searcher.search(query);
//====================准备高亮=================
Formatter formatter = new SimpleHTMLFormatter("<font color='red'>","</font>");
Scorer scorer = new QueryScorer(query);
Highlighter highlighter = new Highlighter(formatter,scorer);
//最大截取50个字符 默认指定一百个字符
Fragmenter fragmenter = new SimpleFragmenter(100);
highlighter.setTextFragmenter(fragmenter);
System.out.println("hits---查到多少挑记录--------"+hits.length());
for(int i = 0; i<hits.length(); i++){
Document doc = hits.doc(i);
//将 description匹配的高亮显示
String description = highlighter.getBestFragment(analyzer, "description",doc.get("description"));
if(description == null){
String desc = doc.get("description");
int index =Math.min(50, desc.length()); //得到最小的那个值,那个小就取那个
description = desc.substring(0,index);
}
doc.getField("description").setValue(description); //将description设置为高亮
String title = highlighter.getBestFragment(analyzer, "title",doc.get("title"));
if(title == null){
String tl = doc.get("title");
int index =Math.min(50, tl.length()); //得到最小的那个值,那个小就取那个
title = tl.substring(0,index);
}
doc.getField("title").setValue(title);
String address = highlighter.getBestFragment(analyzer, "address",doc.get("address"));
if(address == null){
String ads = doc.get("address");
int index =Math.min(50, ads.length()); //得到最小的那个值,那个小就取那个
address = ads.substring(0,index);
}
doc.getField("address").setValue(address);
Photo photo = new Photo();
photo.setCount(hits.length());
photo.setPhotoId(new Long(doc.get("photoId")));
photo.setAddress(doc.get("address"));
photo.setDescription(doc.get("description"));
photo.setDate(doc.get("uploadTime"));
photo.setTitle(doc.get("title"));
photo.setUrl(doc.get("url"));
photo.setUserName(doc.get("userName"));
photo.setUserId(new Long(doc.get("userId")));
list.add(photo);
System.out.println(doc.get("photoId")+"====="
+doc.get("title")+"====="
+doc.get("address")+"======="+
doc.get("title")+"======"
+doc.get("description")+"=---==-="
+doc.get("tag")+"==============="
+doc.get("userName"));
}
return list;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Lucene+MySql/Sqlserver2005 例子+Logo的实现
共50个文件
class:14个
java:14个
jar:8个
4星 · 超过85%的资源 需积分: 10 54 下载量 46 浏览量
2010-10-18
21:16:54
上传
评论 2
收藏 3.06MB RAR 举报
温馨提示
Lucene+MySql/Sqlserver2005 例子,自己在学习lucene的过程中,做了这个小列子,是根据数据库的内容来创建索引,里面包括对查找的关键字进行高亮,对现实的内容进行了限定.对Lucene还没有进入深入的理解,里面的代码也不是很规范,当时为了测试而已,请下载的朋友见谅! 同时还包括网站怎么加上自己的Logo,【网址前面那个小图标】
资源推荐
资源详情
资源评论
收起资源包目录
MysqlLucene.rar (50个子文件)
MysqlLucene
.project 1KB
.settings
.jsdtscope 500B
org.eclipse.jdt.core.prefs 330B
org.eclipse.wst.jsdt.ui.superType.container 49B
org.eclipse.wst.jsdt.ui.superType.name 6B
.mymetadata 306B
WebRoot
searchResult.jsp 3KB
WEB-INF
web.xml 1KB
lib
je-analysis-1.5.3.jar 872KB
lucene-analyzers-2.4.0.jar 141KB
lucene-core-2.4.0.jar 800KB
mysql-connector-java-5.1.12-bin.jar 716KB
lucene-highlighter-2.4.0.jar 89KB
sqlserver2005.jar 247KB
luceneHtmlParser.jar 39KB
standard.jar 384KB
classes
com
lucene
dao
DBConnection.class 970B
PhotoDao.class 3KB
search
SearchFile.class 6KB
listener
CreateIndex.class 1KB
index
IndexFile.class 3KB
service
LuceneControler.class 3KB
entity
Photo.class 2KB
util
LuceneUtil.class 2KB
demo
LuceneDemo.class 2KB
sample
dw
paper
lucene
search
SearchManager.class 1KB
SearchResultBean.class 783B
servlet
SearchControler.class 1KB
index
IndexManager.class 4KB
util
HTMLDocParser.class 1KB
META-INF
MANIFEST.MF 36B
phtotSearch.jsp 3KB
search.jsp 2KB
favicon.ico 9KB
Table 2KB
.myeclipse
src
com
lucene
dao
DBConnection.java 768B
PhotoDao.java 1KB
search
SearchFile.java 5KB
listener
CreateIndex.java 637B
index
IndexFile.java 3KB
service
LuceneControler.java 2KB
entity
Photo.java 2KB
util
LuceneUtil.java 1KB
demo
LuceneDemo.java 2KB
sample
dw
paper
lucene
search
SearchManager.java 2KB
SearchResultBean.java 367B
servlet
SearchControler.java 1KB
index
IndexManager.java 2KB
util
HTMLDocParser.java 1KB
.classpath 1014B
共 50 条
- 1
资源评论
- yfsts2014-07-11运行不了,还是有可参考的
- u0107198192013-11-25有一定的参考价值
- lwang11082013-07-24有一定的参考价值
- 沉睡的昆卡2013-12-30运行不起来呢
- fanfengfengfff2017-01-25据数据库的内容来创建索引,里面包括对查找的关键字进行高亮,对现实的内容进行了限定
小武茶庄
- 粉丝: 28
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 技术资料分享mp1482非常好的技术资料.zip
- 技术资料分享MAX811T非常好的技术资料.zip
- 技术资料分享KXTE9-2050 Specifications Rev 3非常好的技术资料.zip
- 技术资料分享K9F2G08非常好的技术资料.zip
- 技术资料分享K4T1G164QE非常好的技术资料.zip
- 技术资料分享HLY070ML226-12A非常好的技术资料.zip
- 技术资料分享FT5x06-1005-DataSheet非常好的技术资料.zip
- 技术资料分享FORESEE 4GB eMMC Spec A4-120210非常好的技术资料.zip
- 技术资料分享FE2.1-Data-Sheet-(Rev.-1.01)非常好的技术资料.zip
- 技术资料分享CC2530中文数据手册完全版非常好的技术资料.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功