package cn.itcast.lucene.util;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import jeasy.analysis.MMAnalyzer;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriter.MaxFieldLength;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
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;
public class LuceneUtils {
private static String indexPath = "./index";
private static Analyzer analyzer = new MMAnalyzer();
public static String getIndexPath() {
return indexPath;
}
public static void setIndexPath(String indexPath) {
LuceneUtils.indexPath = indexPath;
}
public static Analyzer getAnalyzer() {
return analyzer;
}
/**
* �年IndexWriter
*
* @return
*/
public static IndexWriter getIndexWriter() {
try {
return new IndexWriter(indexPath, analyzer, MaxFieldLength.LIMITED);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public static void closeIndexWriter(IndexWriter indexWriter) {
try {
indexWriter.close();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* �年IndexSearcher
*
* @return
*/
public static IndexSearcher getIndexSearcher() {
try {
return new IndexSearcher(indexPath);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public static void closeIndexSearcher(IndexSearcher indexSearcher) {
try {
indexSearcher.close();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
// ===
private static Map<String, QueryParser> queryParserMap = new HashMap<String, QueryParser>();
/**
* �年QueryParser
*
* @param fields
* @return
*/
public static QueryParser getMultiFieldQueryParser(String[] fields) {
QueryParser queryParser = queryParserMap.get(Arrays.toString(fields));
if (queryParser == null) {
queryParser = new MultiFieldQueryParser(fields, analyzer);
queryParserMap.put(Arrays.toString(fields), queryParser);
}
return queryParser;
}
// ===
private static int fragmentSize = 200;
/**
* �年Highlighter
*
* @param query
* @return
*/
public static Highlighter getHighlighter(Query query) {
Formatter formatter = new SimpleHTMLFormatter("<span class='keyword'>", "</span>");
Scorer scorer = new QueryScorer(query);
Highlighter highlighter = new Highlighter(formatter, scorer);
Fragmenter fragmenter = new SimpleFragmenter(150);
highlighter.setTextFragmenter(fragmenter);
return highlighter;
}
public static void highlight(Document doc, String fieldName, Highlighter highlighter) {
try {
String ht = highlighter.getBestFragment(analyzer, fieldName, doc.get(fieldName));
if (ht == null) {
int end = Math.min(doc.get(fieldName).length(), fragmentSize);
ht = doc.get(fieldName).substring(0, end);
}
doc.getField(fieldName).setValue(ht);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
luncene案例源码
共80个文件
jar:34个
class:12个
java:12个
5星 · 超过95%的资源 需积分: 3 21 下载量 36 浏览量
2011-05-04
23:08:07
上传
评论
收藏 10.04MB ZIP 举报
温馨提示
很经典的lucene案例源码,值得一看,此例子模仿百度贴吧,具有发帖回帖功能
资源推荐
资源详情
资源评论
收起资源包目录
SOURCE_LuceneDemo_ItcastTieba_一个实体,搜索主帖与回帖.zip (80个子文件)
SOURCE_LuceneDemo_ItcastTieba_一个实体,搜索主帖与回帖
.project 1KB
.settings
org.eclipse.core.resources.prefs 142B
com.genuitec.eclipse.j2eedt.core.prefs 1KB
.mymetadata 329B
WebRoot
WEB-INF
web.xml 1KB
struts-config.xml 2KB
pages
article
listTopic.jsp 3KB
showTopic.jsp 3KB
search
showResult.jsp 2KB
searchUI.jsp 893B
simpleSearchUI.jsp 641B
lib
struts-taglib-1.3.8.jar 256KB
log4j-1.2.11.jar 342KB
je-analysis-1.5.3.jar 872KB
lucene-analyzers-2.4.0.jar 141KB
struts-faces-1.3.8.jar 96KB
lucene-core-2.4.0.jar 800KB
jstl-1.2.jar 426KB
commons-beanutils.jar 184KB
jta.jar 9KB
commons-chain-1.1.jar 93KB
hibernate3.jar 2.17MB
commons-logging-1.0.4.jar 37KB
struts-mailreader-dao-1.3.8.jar 22KB
struts-scripting-1.3.8.jar 20KB
commons-digester-1.8.jar 147KB
mysql-connector-java-5.1.5-bin.jar 661KB
lucene-highlighter-2.4.0.jar 89KB
jsf-api.jar 327KB
jsf-impl.jar 1.19MB
junit.jar 114KB
dom4j-1.6.1.jar 307KB
struts-extras-1.3.8.jar 42KB
asm.jar 26KB
struts-core-1.3.8.jar 333KB
struts-el-1.3.8.jar 267KB
commons-io-1.1.jar 65KB
struts-tiles-1.3.8.jar 124KB
cglib-2.1.3.jar 276KB
antlr-2.7.2.jar 357KB
commons-validator-1.3.1.jar 141KB
antlr-2.7.6.jar 433KB
commons-collections.jar 558KB
commons-fileupload-1.1.1.jar 34KB
asm-attrs.jar 16KB
classes
cn
itcast
lucene
dao
ArticleIndexDao.class 4KB
ArticleDao.class 2KB
init
InitAction.class 2KB
struts
action
ArticleAction.class 4KB
SearchArticleAction.class 2KB
formbean
ArticleActionForm.class 1KB
SearchArticleActionForm.class 650B
entity
Article.class 2KB
Article.hbm.xml 911B
util
HibernateUtils.class 1KB
SetRequestCharacterEncodingFilter.class 2KB
ArticleDocumentUtils.class 3KB
LuceneUtils.class 5KB
log4j.properties 2KB
hibernate.cfg.xml 975B
index.jsp 90B
META-INF
MANIFEST.MF 39B
script
jquery.js 118KB
style
main.css 1KB
.myeclipse
src
cn
itcast
lucene
dao
ArticleIndexDao.java 2KB
ArticleDao.java 2KB
init
InitAction.java 1KB
struts
action
SearchArticleAction.java 1KB
ArticleAction.java 3KB
formbean
SearchArticleActionForm.java 342B
ArticleActionForm.java 903B
entity
Article.java 2KB
Article.hbm.xml 911B
util
LuceneUtils.java 4KB
ArticleDocumentUtils.java 2KB
SetRequestCharacterEncodingFilter.java 797B
HibernateUtils.java 870B
log4j.properties 2KB
hibernate.cfg.xml 975B
.classpath 3KB
共 80 条
- 1
资源评论
- 彩虹ai天堂2013-01-04谢谢,还没看。应该不错
a8887187
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功