- 浏览: 483720 次
- 性别:
- 来自: 武汉
最新评论
-
zyzyzy123:
请问有工程吗,我现在正在实现打电话的功能,但是一直不通,怀疑是 ...
实用的java 串口通信程序 -
wuhaitong:
引用[img][/img][*][url][/url] ...
jbpm -
迷糊_le:
maven命令, 蛮好的,谢谢
maven eclipse -
Wuaner:
不错的文章 , 谢谢分享!
Hadoop -
yuqihengsheng:
strong 很细
HighLighter
今天搞了一个关于Lucene的例子,权当入门教程。网上有很多资料,但是要么不全、要么不好用,所以这里把全部代码以及依赖的包贴上来了。
功能包括:创建索引、检索索引、高亮显示查询结果。分词使用的庖丁解牛。
使用前先下载相关的LuceneCore jar包、LuceneHighLighter jar包、庖丁解牛分分词jar包、庖丁解牛词典。并设定环境变量PAODING_DIC_HOME指向词典位置。
前两个可以到官方网站找,庖丁去http://code.google.com/p/paoding/downloads/list下载。
Lucene庖丁整合方式1:
1、将paoding-analysis.jar拷贝到项目的WEB-INF/lib目录;
2、接着需要设置环境变量PAODING_DIC_HOME,变量名:PAODING_DIC_HOME 变量值:E:\paoding\dic
3、第三步将E:\paoding\src目录下的paoding-dic-home.properties属性文件拷贝到项目的src目录下,添加2行
paoding.dic.home.config-fisrt=this
paoding.dic.home=E:/paoding/dic
Lucene庖丁整合方式2:
修改E:\paoding\src\paoding-dic-home.properties,增加一行
paoding.dic.home=classpath:dic
然后运行ant重新生成一个庖丁jar,拷贝到lib下就OK了。
第一种方式便于更新字典,第二种便于移植。本例使用第二种方法整合。
关于庖丁环境的设置可以参考net\paoding\analysis\Constants.java。
使用时注意LuceneCore和LuceneHighLighter的版本配置。我开始使用lucene-core-2.3.2.jar+Highlighter 2.4,后台报错,明显的版本问题。现在使用的是Lucene 2.3.2 + Highlighter 2.2.0。
主要代码实现:
CreateIndex:创建索引文件
- package demo;
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.Date;
- import net.paoding.analysis.analyzer.PaodingAnalyzer;
- import org.apache.lucene.analysis.Analyzer;
- import org.apache.lucene.document.Document;
- import org.apache.lucene.document.Field;
- import org.apache.lucene.index.IndexWriter;
- /**
- * 建立索引
- *
- */
- public class CreateIndex {
- public void createIndex() throws Exception {
- /* 指明要索引文件夹的位置,这里是C盘的S文件夹下 */
- File surceFileDir = new File("D:\\save\\source");
- /* 这里放索引文件的位置 */
- File indexFileDir = new File("D:\\save");
- //Analyzer luceneAnalyzer = new StandardAnalyzer();
- Analyzer luceneAnalyzer = new PaodingAnalyzer();//使用庖丁解牛分词法
- IndexWriter indexWriter = new IndexWriter(indexFileDir, luceneAnalyzer, true);///参数isEmpty是false表示增量索引
- File[] sourceFextFiles = surceFileDir.listFiles();
- long startTime = new Date().getTime();
- // 增加document到索引去
- for (int i = 0; i < sourceFextFiles.length; i++) {
- if (sourceFextFiles[i].isFile()
- && sourceFextFiles[i].getName().endsWith(".txt")) {
- System.out.println("File " + sourceFextFiles[i].getCanonicalPath() + "正在被索引....");
- String temp = FileReaderAll(sourceFextFiles[i].getCanonicalPath(), "GBK");
- System.out.println(temp);
- Document document = new Document();
- Field FieldPath = new Field("path", sourceFextFiles[i].getPath(), Field.Store.YES, Field.Index.NO);
- Field FieldBody = new Field("body", temp, Field.Store.YES, Field.Index.TOKENIZED, Field.TermVector.WITH_POSITIONS_OFFSETS);
- Field FieldTitle = new Field("title", temp, Field.Store.YES, Field.Index.TOKENIZED, Field.TermVector.WITH_POSITIONS_OFFSETS);
- document.add(FieldPath);
- document.add(FieldBody);document.add(FieldTitle);
- indexWriter.addDocument(document);
- }
- }
- // optimize()方法是对索引进行优化
- indexWriter.optimize();
- indexWriter.close();
- // 测试一下索引的时间
- long endTime = new Date().getTime();
- System.out.println("这花费了" + (endTime - startTime) + " 毫秒来把文档增加到索引里面去!"
- + indexFileDir.getPath());
- }
- public static String FileReaderAll(String FileName, String charset)
- throws IOException {
- BufferedReader reader = new BufferedReader(new InputStreamReader(
- new FileInputStream(FileName), charset));
- String line = new String();
- String temp = new String();
- while ((line = reader.readLine()) != null) {
- temp += line;
- }
- reader.close();
- return temp;
- }
- /**
- * @param args
- */
- public static void main(String[] args) {
- try {
- new CreateIndex().createIndex();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
package demo; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.Date; import net.paoding.analysis.analyzer.PaodingAnalyzer; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.index.IndexWriter; /** * 建立索引 * */ public class CreateIndex { public void createIndex() throws Exception { /* 指明要索引文件夹的位置,这里是C盘的S文件夹下 */ File surceFileDir = new File("D:\\save\\source"); /* 这里放索引文件的位置 */ File indexFileDir = new File("D:\\save"); //Analyzer luceneAnalyzer = new StandardAnalyzer(); Analyzer luceneAnalyzer = new PaodingAnalyzer();//使用庖丁解牛分词法 IndexWriter indexWriter = new IndexWriter(indexFileDir, luceneAnalyzer, true);///参数isEmpty是false表示增量索引 File[] sourceFextFiles = surceFileDir.listFiles(); long startTime = new Date().getTime(); // 增加document到索引去 for (int i = 0; i < sourceFextFiles.length; i++) { if (sourceFextFiles[i].isFile() && sourceFextFiles[i].getName().endsWith(".txt")) { System.out.println("File " + sourceFextFiles[i].getCanonicalPath() + "正在被索引...."); String temp = FileReaderAll(sourceFextFiles[i].getCanonicalPath(), "GBK"); System.out.println(temp); Document document = new Document(); Field FieldPath = new Field("path", sourceFextFiles[i].getPath(), Field.Store.YES, Field.Index.NO); Field FieldBody = new Field("body", temp, Field.Store.YES, Field.Index.TOKENIZED, Field.TermVector.WITH_POSITIONS_OFFSETS); Field FieldTitle = new Field("title", temp, Field.Store.YES, Field.Index.TOKENIZED, Field.TermVector.WITH_POSITIONS_OFFSETS); document.add(FieldPath); document.add(FieldBody);document.add(FieldTitle); indexWriter.addDocument(document); } } // optimize()方法是对索引进行优化 indexWriter.optimize(); indexWriter.close(); // 测试一下索引的时间 long endTime = new Date().getTime(); System.out.println("这花费了" + (endTime - startTime) + " 毫秒来把文档增加到索引里面去!" + indexFileDir.getPath()); } public static String FileReaderAll(String FileName, String charset) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader( new FileInputStream(FileName), charset)); String line = new String(); String temp = new String(); while ((line = reader.readLine()) != null) { temp += line; } reader.close(); return temp; } /** * @param args */ public static void main(String[] args) { try { new CreateIndex().createIndex(); } catch (Exception e) { e.printStackTrace(); } } }
QueryHighLighter:检索关键字并高亮显示
- package demo;
- import java.io.StringReader;
- import net.paoding.analysis.analyzer.PaodingAnalyzer;
- import org.apache.lucene.analysis.Analyzer;
- import org.apache.lucene.analysis.TokenStream;
- import org.apache.lucene.document.Document;
- import org.apache.lucene.queryParser.QueryParser;
- import org.apache.lucene.search.BooleanClause;
- import org.apache.lucene.search.IndexSearcher;
- import org.apache.lucene.search.Query;
- import org.apache.lucene.search.ScoreDoc;
- import org.apache.lucene.search.TopDocCollector;
- import org.apache.lucene.search.highlight.Highlighter;
- import org.apache.lucene.search.highlight.QueryScorer;
- import org.apache.lucene.search.highlight.SimpleFragmenter;
- import org.apache.lucene.search.highlight.SimpleHTMLFormatter;
- import test.TestLuceneHighlighter2;
- /**
- * 高亮显示检索结果
- * Lucene 2.3.2 + Highlighter 2.2.0 的分页+高亮显示代码例子.<br>
- * Lucene和Highlighter不是最新版本可以升级。
- */
- public class QueryHighLighter {
- private static final String FIELD_TITLE = "title";
- private static final String FIELD_BODY = "body";
- public synchronized Analyzer getAnalyzer() {
- return new PaodingAnalyzer();// 此处使用"庖丁解牛"分词法,另外一种是中科院分词法
- }
- public String test(String queryString, int begin, int number) {
- StringBuffer sb = new StringBuffer();
- IndexSearcher isearcher = null;
- try {
- isearcher = new IndexSearcher("D:\\save");
- /* 下面这个表示要同时搜索这两个域,而且只要一个域里面有满足我们搜索的内容就行 */
- BooleanClause.Occur[] clauses = { BooleanClause.Occur.SHOULD,
- BooleanClause.Occur.SHOULD };
- TopDocCollector collector = new TopDocCollector(10);
- /*Query query = MultiFieldQueryParser.parse(queryString,
- new String[] { FIELD_TITLE, FIELD_BODY }, clauses,
- getAnalyzer());*/
- QueryParser queryParse = new QueryParser(FIELD_TITLE, getAnalyzer());
- Query query = queryParse.parse(queryString);
- isearcher.search(query, collector);
- ScoreDoc[] hits = collector.topDocs().scoreDocs;
- // 用这个进行高亮显示,默认是<b>..</b>
- // 用这个指定<read>..</read>
- SimpleHTMLFormatter simpleHTMLFormatter = new SimpleHTMLFormatter("<b><font color='red'>", "</font></b>");
- // 构造高亮
- // 指定高亮的格式
- // 指定查询评分
- Highlighter highlighter = new Highlighter(simpleHTMLFormatter, new QueryScorer(query));
- // 这个一般等于你要返回的,高亮的数据长度
- // 如果太小,则只有数据的开始部分被解析并高亮,且返回的数据也少
- // 太大,有时太浪费了。
- highlighter.setTextFragmenter(new SimpleFragmenter(Integer.MAX_VALUE));
- for (int i = begin; i < hits.length && i < begin + number; i++) {
- Document doc = isearcher.doc(hits[i].doc);
- String value = doc.get(FIELD_TITLE);
- String value2 = doc.get(FIELD_BODY);
- // 有三个参数
- // 分析器
- // 要解析的字段名
- // 要解析的数据
- //System.out.println(highlighter.getBestFragment(getAnalyzer(),
- // FIELD_TITLE, doc.get(FIELD_TITLE)));
- if (value != null) {
- TokenStream tokenStream = getAnalyzer().tokenStream(FIELD_TITLE, new StringReader(value));
- String str = highlighter.getBestFragment(tokenStream, value);
- sb.append("<li><li>").append(str).append("<br/>");
- System.out.println(str);
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- if (isearcher != null) {
- try {
- isearcher.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- return sb.toString();
- }
- public static void main(String[] args){
- TestLuceneHighlighter2 t = new TestLuceneHighlighter2();
- String queryString = "中华人民共和国";
- int begin = 0;
- int number = 10;
- t.test(queryString, begin, number);
- }
- }
- package demo;
- import java.io.StringReader;
- import net.paoding.analysis.analyzer.PaodingAnalyzer;
- import org.apache.lucene.analysis.Analyzer;
- import org.apache.lucene.analysis.TokenStream;
- import org.apache.lucene.document.Document;
- import org.apache.lucene.queryParser.QueryParser;
- import org.apache.lucene.search.BooleanClause;
- import org.apache.lucene.search.IndexSearcher;
- import org.apache.lucene.search.Query;
- import org.apache.lucene.search.ScoreDoc;
- import org.apache.lucene.search.TopDocCollector;
- import org.apache.lucene.search.highlight.Highlighter;
- import org.apache.lucene.search.highlight.QueryScorer;
- import org.apache.lucene.search.highlight.SimpleFragmenter;
- import org.apache.lucene.search.highlight.SimpleHTMLFormatter;
- import test.TestLuceneHighlighter2;
- /**
- * 高亮显示检索结果
- * Lucene 2.3.2 + Highlighter 2.2.0 的分页+高亮显示代码例子.<br>
- * Lucene和Highlighter不是最新版本可以升级。
- */
- public class QueryHighLighter {
- private static final String FIELD_TITLE = "title";
- private static final String FIELD_BODY = "body";
- public synchronized Analyzer getAnalyzer() {
- return new PaodingAnalyzer();// 此处使用"庖丁解牛"分词法,另外一种是中科院分词法
- }
- public String test(String queryString, int begin, int number) {
- StringBuffer sb = new StringBuffer();
- IndexSearcher isearcher = null;
- try {
- isearcher = new IndexSearcher("D:\\save");
- /* 下面这个表示要同时搜索这两个域,而且只要一个域里面有满足我们搜索的内容就行 */
- BooleanClause.Occur[] clauses = { BooleanClause.Occur.SHOULD,
- BooleanClause.Occur.SHOULD };
- TopDocCollector collector = new TopDocCollector(10);
- /*Query query = MultiFieldQueryParser.parse(queryString,
- new String[] { FIELD_TITLE, FIELD_BODY }, clauses,
- getAnalyzer());*/
- QueryParser queryParse = new QueryParser(FIELD_TITLE, getAnalyzer());
- Query query = queryParse.parse(queryString);
- isearcher.search(query, collector);
- ScoreDoc[] hits = collector.topDocs().scoreDocs;
- // 用这个进行高亮显示,默认是<b>..</b>
- // 用这个指定<read>..</read>
- SimpleHTMLFormatter simpleHTMLFormatter = new SimpleHTMLFormatter("<b><font color='red'>", "</font></b>");
- // 构造高亮
- // 指定高亮的格式
- // 指定查询评分
- Highlighter highlighter = new Highlighter(simpleHTMLFormatter, new QueryScorer(query));
- // 这个一般等于你要返回的,高亮的数据长度
- // 如果太小,则只有数据的开始部分被解析并高亮,且返回的数据也少
- // 太大,有时太浪费了。
- highlighter.setTextFragmenter(new SimpleFragmenter(Integer.MAX_VALUE));
- for (int i = begin; i < hits.length && i < begin + number; i++) {
- Document doc = isearcher.doc(hits[i].doc);
- String value = doc.get(FIELD_TITLE);
- String value2 = doc.get(FIELD_BODY);
- // 有三个参数
- // 分析器
- // 要解析的字段名
- // 要解析的数据
- //System.out.println(highlighter.getBestFragment(getAnalyzer(),
- // FIELD_TITLE, doc.get(FIELD_TITLE)));
- if (value != null) {
- TokenStream tokenStream = getAnalyzer().tokenStream(FIELD_TITLE, new StringReader(value));
- String str = highlighter.getBestFragment(tokenStream, value);
- sb.append("<li><li>").append(str).append("<br/>");
- System.out.println(str);
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- if (isearcher != null) {
- try {
- isearcher.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- return sb.toString();
- }
- public static void main(String[] args){
- TestLuceneHighlighter2 t = new TestLuceneHighlighter2();
- String queryString = "中华人民共和国";
- int begin = 0;
- int number = 10;
- t.test(queryString, begin, number);
- }
- }
package demo; import java.io.StringReader; import net.paoding.analysis.analyzer.PaodingAnalyzer; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.document.Document; import org.apache.lucene.queryParser.QueryParser; import org.apache.lucene.search.BooleanClause; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.Query; import org.apache.lucene.search.ScoreDoc; import org.apache.lucene.search.TopDocCollector; import org.apache.lucene.search.highlight.Highlighter; import org.apache.lucene.search.highlight.QueryScorer; import org.apache.lucene.search.highlight.SimpleFragmenter; import org.apache.lucene.search.highlight.SimpleHTMLFormatter; import test.TestLuceneHighlighter2; /** * 高亮显示检索结果 * Lucene 2.3.2 + Highlighter 2.2.0 的分页+高亮显示代码例子.<br> * Lucene和Highlighter不是最新版本可以升级。 */ public class QueryHighLighter { private static final String FIELD_TITLE = "title"; private static final String FIELD_BODY = "body"; public synchronized Analyzer getAnalyzer() { return new PaodingAnalyzer();// 此处使用"庖丁解牛"分词法,另外一种是中科院分词法 } public String test(String queryString, int begin, int number) { StringBuffer sb = new StringBuffer(); IndexSearcher isearcher = null; try { isearcher = new IndexSearcher("D:\\save"); /* 下面这个表示要同时搜索这两个域,而且只要一个域里面有满足我们搜索的内容就行 */ BooleanClause.Occur[] clauses = { BooleanClause.Occur.SHOULD, BooleanClause.Occur.SHOULD }; TopDocCollector collector = new TopDocCollector(10); /*Query query = MultiFieldQueryParser.parse(queryString, new String[] { FIELD_TITLE, FIELD_BODY }, clauses, getAnalyzer());*/ QueryParser queryParse = new QueryParser(FIELD_TITLE, getAnalyzer()); Query query = queryParse.parse(queryString); isearcher.search(query, collector); ScoreDoc[] hits = collector.topDocs().scoreDocs; // 用这个进行高亮显示,默认是<b>..</b> // 用这个指定<read>..</read> SimpleHTMLFormatter simpleHTMLFormatter = new SimpleHTMLFormatter("<b><font color='red'>", "</font></b>"); // 构造高亮 // 指定高亮的格式 // 指定查询评分 Highlighter highlighter = new Highlighter(simpleHTMLFormatter, new QueryScorer(query)); // 这个一般等于你要返回的,高亮的数据长度 // 如果太小,则只有数据的开始部分被解析并高亮,且返回的数据也少 // 太大,有时太浪费了。 highlighter.setTextFragmenter(new SimpleFragmenter(Integer.MAX_VALUE)); for (int i = begin; i < hits.length && i < begin + number; i++) { Document doc = isearcher.doc(hits[i].doc); String value = doc.get(FIELD_TITLE); String value2 = doc.get(FIELD_BODY); // 有三个参数 // 分析器 // 要解析的字段名 // 要解析的数据 //System.out.println(highlighter.getBestFragment(getAnalyzer(), // FIELD_TITLE, doc.get(FIELD_TITLE))); if (value != null) { TokenStream tokenStream = getAnalyzer().tokenStream(FIELD_TITLE, new StringReader(value)); String str = highlighter.getBestFragment(tokenStream, value); sb.append("<li><li>").append(str).append("<br/>"); System.out.println(str); } } } catch (Exception e) { e.printStackTrace(); } finally { if (isearcher != null) { try { isearcher.close(); } catch (Exception e) { e.printStackTrace(); } } } return sb.toString(); } public static void main(String[] args){ TestLuceneHighlighter2 t = new TestLuceneHighlighter2(); String queryString = "中华人民共和国"; int begin = 0; int number = 10; t.test(queryString, begin, number); } } package demo; import java.io.StringReader; import net.paoding.analysis.analyzer.PaodingAnalyzer; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.document.Document; import org.apache.lucene.queryParser.QueryParser; import org.apache.lucene.search.BooleanClause; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.Query; import org.apache.lucene.search.ScoreDoc; import org.apache.lucene.search.TopDocCollector; import org.apache.lucene.search.highlight.Highlighter; import org.apache.lucene.search.highlight.QueryScorer; import org.apache.lucene.search.highlight.SimpleFragmenter; import org.apache.lucene.search.highlight.SimpleHTMLFormatter; import test.TestLuceneHighlighter2; /** * 高亮显示检索结果 * Lucene 2.3.2 + Highlighter 2.2.0 的分页+高亮显示代码例子.<br> * Lucene和Highlighter不是最新版本可以升级。 */ public class QueryHighLighter { private static final String FIELD_TITLE = "title"; private static final String FIELD_BODY = "body"; public synchronized Analyzer getAnalyzer() { return new PaodingAnalyzer();// 此处使用"庖丁解牛"分词法,另外一种是中科院分词法 } public String test(String queryString, int begin, int number) { StringBuffer sb = new StringBuffer(); IndexSearcher isearcher = null; try { isearcher = new IndexSearcher("D:\\save"); /* 下面这个表示要同时搜索这两个域,而且只要一个域里面有满足我们搜索的内容就行 */ BooleanClause.Occur[] clauses = { BooleanClause.Occur.SHOULD, BooleanClause.Occur.SHOULD }; TopDocCollector collector = new TopDocCollector(10); /*Query query = MultiFieldQueryParser.parse(queryString, new String[] { FIELD_TITLE, FIELD_BODY }, clauses, getAnalyzer());*/ QueryParser queryParse = new QueryParser(FIELD_TITLE, getAnalyzer()); Query query = queryParse.parse(queryString); isearcher.search(query, collector); ScoreDoc[] hits = collector.topDocs().scoreDocs; // 用这个进行高亮显示,默认是<b>..</b> // 用这个指定<read>..</read> SimpleHTMLFormatter simpleHTMLFormatter = new SimpleHTMLFormatter("<b><font color='red'>", "</font></b>"); // 构造高亮 // 指定高亮的格式 // 指定查询评分 Highlighter highlighter = new Highlighter(simpleHTMLFormatter, new QueryScorer(query)); // 这个一般等于你要返回的,高亮的数据长度 // 如果太小,则只有数据的开始部分被解析并高亮,且返回的数据也少 // 太大,有时太浪费了。 highlighter.setTextFragmenter(new SimpleFragmenter(Integer.MAX_VALUE)); for (int i = begin; i < hits.length && i < begin + number; i++) { Document doc = isearcher.doc(hits[i].doc); String value = doc.get(FIELD_TITLE); String value2 = doc.get(FIELD_BODY); // 有三个参数 // 分析器 // 要解析的字段名 // 要解析的数据 //System.out.println(highlighter.getBestFragment(getAnalyzer(), // FIELD_TITLE, doc.get(FIELD_TITLE))); if (value != null) { TokenStream tokenStream = getAnalyzer().tokenStream(FIELD_TITLE, new StringReader(value)); String str = highlighter.getBestFragment(tokenStream, value); sb.append("<li><li>").append(str).append("<br/>"); System.out.println(str); } } } catch (Exception e) { e.printStackTrace(); } finally { if (isearcher != null) { try { isearcher.close(); } catch (Exception e) { e.printStackTrace(); } } } return sb.toString(); } public static void main(String[] args){ TestLuceneHighlighter2 t = new TestLuceneHighlighter2(); String queryString = "中华人民共和国"; int begin = 0; int number = 10; t.test(queryString, begin, number); } }
附加上传net\paoding\analysis\Constants.java便于理解参数设置:
- package net.paoding.analysis;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Properties;
- /**
- *
- * @author Zhiliang Wang [qieqie.wang@gmail.com]
- *
- * @since 2.0.0
- */
- </strong
- luncenProject.rar (3 MB)
- 下载次数: 45
发表评论
-
安装和使用memcached
2014-04-16 16:24 640如何将 memcached 融入到 ... -
applicationContext.xml
2013-08-09 09:05 941<?xml version="1.0&quo ... -
注释驱动的 Spring cache 缓存介绍
2013-08-08 07:04 659概述 Spring 3.1 引入了激动人心的基于注释(an ... -
Spring2.5 Annotations
2013-08-08 06:33 854完成setXxxx功能,即配置文件的 <propert ... -
Spring基于注解的缓存配置--EHCache AND OSCache
2013-08-07 23:21 1025本文将构建一个普通工程来说明spring注解缓存的使用方式, ... -
Ehcache 整合Spring 使用页面、对象缓存
2013-08-07 22:51 893Ehcache 整合Spring 使用页面、对象缓存 ... -
javassist教程和示例
2013-05-18 08:57 2008Javassist是一个执行字节 ... -
ZooKeeper官方文档
2013-05-16 17:09 1559介绍(源自ZooKeeper官方文档) 学习HBase过程 ... -
ZooKeeper -例子
2013-05-16 17:08 1206ZooKeeper ZooKeepe ... -
Spring整合Hessian访问远程服务
2013-05-15 13:44 853Spring整合Hessian访问远程服务 目录 1.1 ... -
redis
2013-05-14 11:44 767redis是一个key-value存储系统。和Memcach ... -
spring 资源访问
2013-05-13 08:26 996spring在java基础上封装了资源访问,简单易用。 R ... -
ZooKeeper——入门
2013-05-08 16:12 909ZooKeeper——入门 博客分类: ZooK ... -
分布式服务框架 Zookeeper -- 管理分布式环境中的数据(IBM)
2013-05-08 14:07 784安装和配置详解 本文 ... -
分布式协调服务---Zookeeper
2013-05-08 14:05 7741、Zookeeper overview Zookee ... -
Hibernate
2013-03-28 13:04 923一、简述 Hibernate 和 JD ... -
Apache+Tomcat集群配置详解
2013-02-01 10:52 890Apache + Tomcat集群配置详解(1) 一、 ... -
Apache+Jboss集群基于反向代理的负载均衡
2013-02-01 10:40 2490假设三台机器IP分别为172.29.128.100、172. ... -
spring + ibatis 多数据源事务(分布式事务)管理配置方法
2012-12-17 15:18 1265spring + ibatis 多数据源事务(分布式事务 ... -
Hessian序列化不设SerializerFactory性能问题
2012-10-31 09:47 1492Hessian序列化不设SerializerFactor ...
相关推荐
赠送jar包:lucene-highlighter-7.3.1.jar; 赠送原API文档:lucene-highlighter-7.3.1-javadoc.jar; 赠送源代码:lucene-highlighter-7.3.1-sources.jar; 赠送Maven依赖信息文件:lucene-highlighter-7.3.1.pom;...
赠送jar包:lucene-highlighter-6.6.0.jar; 赠送原API文档:lucene-highlighter-6.6.0-javadoc.jar; 赠送源代码:lucene-highlighter-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-highlighter-6.6.0.pom;...
《Lucene Highlighter 3.4.0:搜索引擎中的文本高亮工具》 在信息爆炸的时代,搜索引擎成为了我们获取知识的重要途径。Apache Lucene,作为一款高性能、全文本搜索库,为开发者提供了强大的搜索功能。其中,Lucene ...
《Lucene 3.6.2与Highlighter:搜索引擎中的文本高亮技术》 Lucene是一个高度可定制的全文搜索引擎库,广泛应用于各种Java应用程序中,以实现强大的搜索功能。在3.6.2版本中,Lucene提供了一整套功能,包括索引构建...
标题"自己修改的基于lucene.net 2.9和highlighter插件的简单例子"表明这是一个示例项目,演示了如何在Lucene.NET 2.9版本上结合Highlighter插件进行操作。Lucene.NET是Apache Lucene搜索引擎库的.NET版本,用于实现...
而Highlighter.dll则提供了一个重要的补充服务——高亮显示,它能够将查询中的关键词在搜索结果中突出显示,使得用户可以快速识别出与查询相关的关键信息。 Lucene.NET的核心功能包括: 1. **索引创建**:首先,...
《Lucene+HighLighter高亮显示实例解析》 在信息技术领域,搜索引擎的构建与优化是至关重要的一环,其中,如何有效地对搜索结果进行高亮显示,以突出关键信息,是提升用户体验的关键因素之一。本篇文章将深入探讨...
《Apache Lucene Highlighter模块详解》 Apache Lucene是一个高性能、全文检索库,它为Java开发者提供了强大的文本分析和搜索功能。在Lucene的众多组件中,Highlighter模块扮演着重要角色,它能够帮助我们从搜索...
lucene-highlighter.jar lucene-highlighter.jar
BracketHighlighter是一款非常实用的文本编辑器插件,主要用于编程时的括号匹配高亮显示。在编程过程中,正确地配对和管理括号是至关重要的,BracketHighlighter能够帮助开发者更加直观地看到代码中的括号对,提高...
《深入解析Lucene高亮显示源码:剖析`lucene-highlighter-2.2.0-src.zip`》 Lucene,作为一个开源全文检索库,以其高效、灵活的特点在信息检索领域广泛应用。在处理搜索结果时,为了提升用户体验,通常会采用高亮...
"RichEdit Syntax Highlighter v2.5" 是一个专门针对富文本编辑器(RichEdit)设计的源码语法高亮工具。它允许开发者为在 RichEdit 控件中显示的代码添加颜色和样式,以增强代码的可读性和美观性。在编程环境中,...
"Atom-electron-highlighter-syntax"是一个专门为Atom设计的语法主题,旨在提升代码的可读性和视觉吸引力。这个主题是由mikemcbride为他的“electron”项目贡献的,它可能特别适合于Electron应用的开发,Electron是...
lucene3.0-highlighter.jar lucene3.0的高亮jar包,从lucene3.0源码中导出来的
lucene-highlighter-3.5.0.jar lucene高亮包
lucene-highlighter-3.0.1.jar 还在为找不到jar文件烦心吗,不用了到我空间来有你想要的,持续更新。
【压缩包子文件的文件名称列表】"super-simple-highlighter-master":这是源代码的主目录,通常包含所有必要的文件,如JavaScript代码、CSS样式表、HTML界面以及manifest.json配置文件。开发者需要在这个目录下查看...
实现中文分词的jar包:lucene-highlighter-3.6.1.jar
lucene-highlighter-4.3.0.jar
lucene-highlighter-2.9.0.jar