- 浏览: 310524 次
- 性别:
文章分类
最新评论
-
u010503822:
不懂这个是否是你需要的// map转Json数据 json转 ...
gson使用感受 -
亚飞正传:
您好,你以前是在PChome工作的?
<![CDATA[谈谈PHP为什么不支持重载和多态]]> -
亚飞正传:
您好,你以前是在PChome工作的?
<![CDATA[谈谈PHP为什么不支持重载和多态]]> -
wangluo19:
对T解释的很清楚,以前看到java源码中的T就晕了,现在好了明 ...
JAVA学习笔记之泛型接口 -
huangfoxAgain:
不错!!!
JAVA学习笔记之泛型接口
网上有很多高亮的类,但我觉得太负责了(也许他们觉得这样性能更高),我写了一个很简单采用je分词+正则解决高亮问题,实际使用下来还是不错的:
java 代码
- import java.util.Iterator;
- import java.util.List;
- /**
- * @author edwardpro
- *
- */
- public class HighlightProcess {
- /**
- *
- */
- private String str;
- private String key;
- private static final String HIGH_LIGHT = ";
- public HighlightProcess(String str, String key) {
- // TODO Auto-generated constructor stub
- this.str = str;
- this.key = key;
- }
- /**
- * @return the str
- */
- public String getStr() {
- return str;
- }
- /**
- * @param str
- * the str to set
- */
- public void setStr(String str) {
- this.str = str;
- }
- public String getResult() {
- List list = WordsManager.splitStrToList(key);
- for (Iterator it = list.iterator(); it.hasNext();) {
- String target = (String) it.next();
- this.str = RegxTools.regxReplace(this.str, target, HIGH_LIGHT);
- }
- return this.str;
- }
- }
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileReader;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.List;
- import java.util.StringTokenizer;
- import jeasy.analysis.MMAnalyzer;
- import org.apache.log4j.Logger;
- public class WordsManager {
- private static final Logger logger = Logger.getLogger(WordsManager.class);
- private static MMAnalyzer mmanalyzer;
- private static final String DEF_SPT = "<>";
- static {
- init();
- }
- private static void init() {
- reload();
- mmanalyzer = new MMAnalyzer();
- }
- public static void reload() {
- if (AppInit.getScb().getExtDic() != null
- && !AppInit.getScb().getExtDic().equalsIgnoreCase("")) {
- File dir = new File(AppInit.getScb().getExtDic());
- File[] dics = dir.listFiles();
- // add dict file
- for (int i = 0; i < dics.length; i++) {
- try {
- MMAnalyzer.addDictionary(new FileReader(dics[i]));
- } catch (FileNotFoundException e) {
- // TODO Auto-generated catch block
- logger.error("Read File Error", e);
- }
- }
- }
- }
- /**
- * @return the mmanalyzer
- */
- public static MMAnalyzer getMmanalyzer() {
- return mmanalyzer;
- }
- /**
- * @param mmanalyzer
- * the mmanalyzer to set
- */
- public static void setMmanalyzer(MMAnalyzer mmanalyzer) {
- WordsManager.mmanalyzer = mmanalyzer;
- }
- public static String[] splitStrToArray(String source) {
- try {
- String target = mmanalyzer.segment(source, DEF_SPT);
- String[] ts = target.split(DEF_SPT);
- return ts;
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return null;
- }
- public static List splitStrToList(String source) {
- List ret = new ArrayList();
- try {
- String target = mmanalyzer.segment(source, DEF_SPT);
- StringTokenizer st = new StringTokenizer(target, DEF_SPT);
- for (; st.hasMoreTokens();) {
- ret.add(st.nextToken());
- }
- } catch (IOException e) {
- // TODO Auto-generated catch block
- logger.error("segment error", e);
- }
- return ret;
- }
- public static void removeTag(String content) {
- MMAnalyzer.removeWord(content);
- }
- }
- String reg="$1";
- public static String regxReplace(String str, String key, String rep) {
- Pattern p = Pattern.compile("(" + key + ")", Pattern.CASE_INSENSITIVE);
- Matcher m = p.matcher(str);
- return m.replaceAll(rep);
- }
- public HighlightProcess(String str, String key) {
- // TODO Auto-generated constructor stub
- this.str = str;
- this.key = key;
- }
- /**
- * @return the str
- */
- public String getStr() {
- return str;
- }
- /**
- * @param str
- * the str to set
- */
- public void setStr(String str) {
- this.str = str;
- }
- public String getResult() {
- List list = WordsManager.splitStrToList(key);
- for (Iterator it = list.iterator(); it.hasNext();) {
- String target = (String) it.next();
- this.str = RegxTools.regxReplace(this.str, target, HIGH_LIGHT);
- }
- return this.str;
- }
- }
分词这边使用了一个工厂方法,用来装载词库的,返回的是JE分词对象:
java 代码
正则方法:
java 代码
原理很简单,利用分词分开,然后用这则一个个匹配掉目标中的关键字,由于实际中大部分都是替换标题和200字的描述所以并没有使用流方法,下次有时间改用流或者stringbuffer或者其他更接近分词的方法来做下看看,有什么问题,欢迎大家拍砖
分词这边使用了一个工厂方法,用来装载词库的,返回的是JE分词对象:
java 代码
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileReader;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.List;
- import java.util.StringTokenizer;
- import jeasy.analysis.MMAnalyzer;
- import org.apache.log4j.Logger;
- public class WordsManager {
- private static final Logger logger = Logger.getLogger(WordsManager.class);
- private static MMAnalyzer mmanalyzer;
- private static final String DEF_SPT = "<>";
- static {
- init();
- }
- private static void init() {
- reload();
- mmanalyzer = new MMAnalyzer();
- }
- public static void reload() {
- if (AppInit.getScb().getExtDic() != null
- && !AppInit.getScb().getExtDic().equalsIgnoreCase("")) {
- File dir = new File(AppInit.getScb().getExtDic());
- File[] dics = dir.listFiles();
- // add dict file
- for (int i = 0; i < dics.length; i++) {
- try {
- MMAnalyzer.addDictionary(new FileReader(dics[i]));
- } catch (FileNotFoundException e) {
- // TODO Auto-generated catch block
- logger.error("Read File Error", e);
- }
- }
- }
- }
- /**
- * @return the mmanalyzer
- */
- public static MMAnalyzer getMmanalyzer() {
- return mmanalyzer;
- }
- /**
- * @param mmanalyzer
- * the mmanalyzer to set
- */
- public static void setMmanalyzer(MMAnalyzer mmanalyzer) {
- WordsManager.mmanalyzer = mmanalyzer;
- }
- public static String[] splitStrToArray(String source) {
- try {
- String target = mmanalyzer.segment(source, DEF_SPT);
- String[] ts = target.split(DEF_SPT);
- return ts;
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return null;
- }
- public static List splitStrToList(String source) {
- List ret = new ArrayList();
- try {
- String target = mmanalyzer.segment(source, DEF_SPT);
- StringTokenizer st = new StringTokenizer(target, DEF_SPT);
- for (; st.hasMoreTokens();) {
- ret.add(st.nextToken());
- }
- } catch (IOException e) {
- // TODO Auto-generated catch block
- logger.error("segment error", e);
- }
- return ret;
- }
- public static void removeTag(String content) {
- MMAnalyzer.removeWord(content);
- }
- }
正则方法:
java 代码
- String reg="$1";
- public static String regxReplace(String str, String key, String rep) {
- Pattern p = Pattern.compile("(" + key + ")", Pattern.CASE_INSENSITIVE);
- Matcher m = p.matcher(str);
- return m.replaceAll(rep);
- }
原理很简单,利用分词分开,然后用这则一个个匹配掉目标中的关键字,由于实际中大部分都是替换标题和200字的描述所以并没有使用流方法,下次有时间改用流或者stringbuffer或者其他更接近分词的方法来做下看看,有什么问题,欢迎大家拍砖
发表评论
-
Thread In Ruby
2011-11-02 00:24 2617今日终于把原来留下来的ios notify给整了,由于用户数据 ... -
thrift-1-2-3
2011-10-07 20:24 4041国庆前后玩了一下thrift,下面是一些入门级的体会和心得: ... -
lexer html解析一个js过滤的改进
2011-09-22 11:07 1297问题描述,使用htmlparser的lexer解析器进行页面解 ... -
在linux下删除大文件的好方法
2011-09-16 09:36 2115上次在linux书上看到的,我们平时删除日志可能会用: ... -
thrift 在ubuntu 11.04下的编译过程一两点心得
2011-09-14 21:46 2967今天需要使用thrift于是随手下载下来了,下载过程很简单,但 ... -
StringBuilder和String中的subString方法的细微差别
2011-02-23 20:19 7722昨天改了一个很小的地方,但是在线上跑的时候突然感觉内存消耗差别 ... -
用枚举来作为配置
2010-04-20 21:39 1310一个简单的需求需要自动抓取一些http request参数到上 ... -
装箱操作需注意
2009-10-24 15:25 1100近期在工作里发现一个代码bug,主要是装箱上的问题,我们知道在 ... -
在JTIDY中对于inline标签的这行问题
2009-09-24 16:40 1309在一个项目中需要使用jtidy格式化页面,一开始感觉不错,但是 ... -
JAVA7的不兼容表现
2009-09-06 17:49 10234今天有时间玩一下JAVA7,却发现有点小问题: Caused ... -
用SPRING AOP实现主动缓存
2009-06-21 13:05 1774缓存的实现最简单的模 ... -
gson使用感受
2009-06-13 08:27 4735google的东西向来以简洁唯美gson也是如此: ... -
数据对象化的思考
2009-06-13 07:51 1278以前曾经想利用json作为字段数据存储格式,这样当我们扩展表属 ... -
用json作为配置存储介质的讨论
2009-04-02 20:57 1329为什么会考虑json: 有没 ... -
JAVA学习笔记之泛型接口
2009-02-02 22:58 11079应该是我很久没有好好学技术了,有时候想用的时候却发现不会写,比 ... -
lucene中的filter器群组及其缓存大盘点
2008-07-04 02:13 3346lucene中的filter其实并不起眼,大家对其对性能的影响 ... -
lucene的前端集群思路
2008-04-17 10:52 4969你的搜索可以集群吗(这里单指前端应用集群)?这是一个突然发来的 ... -
自己写的lucene的高亮类
2007-08-10 16:03 2150网上有很多高亮的类,但我觉得太负责了(也许他们觉得这样性能更高 ... -
使用form dom要注意的小问题
2007-08-08 16:43 1435几天调一个js遇到灵异问题:var s=$('sform'); ... -
ubuntu 7.04 下配置 ruby环境
2007-07-01 16:26 1742其实这个环境配置很容易的应该 apt-get就可以得到了,但事 ...
相关推荐
- **IndexWriter**:用于创建和更新索引的主要类,管理写入操作。 下面是一个简单的创建索引的示例: ```java Directory indexDir = FSDirectory.open(Paths.get("index")); // 指定索引目录 Analyzer analyzer = ...
然后,我们需要引入必要的命名空间以使用Lucene.Net的相关类: ```csharp using Lucene.Net.Index; using Lucene.Net.Store; using Lucene.Net.Analysis; using Lucene.Net.Analysis.Standard; using Lucene.Net....
2. 构建查询:`QueryParser`类用于构建查询。你可以指定查询字段和查询文本,它会生成一个`Query`对象。 3. 执行搜索:`IndexSearcher`的`search(Query, int)`方法执行搜索,返回一个`TopDocs`对象,其中包含了匹配...
【Lucene】是一个高度成熟且广泛使用的开源全文检索库,由Doug Cutting开发并最终贡献给了Apache软件基金会。作为Java语言实现的信息检索库,Lucene提供了索引和搜索功能,允许开发者将其集成到自己的应用程序中,以...
在"Lunece_search"的压缩包文件中,很可能包含了实现上述步骤的代码示例或者教程。通过阅读和实践这些示例,我们可以更好地理解和掌握Lunecy+ES在实际项目中的应用。 总的来说,Lunecy+ES的组合为开发者提供了一套...
lunece 学习笔记实用知识库分享知识分享 在本文中,我们将从多方面探索 Lucene 和 Solr 相关的知识点,并对其进行详细的分析和解释。 Lucene 和 Solr 的基本概念 Lucene 是一个基于 Java 的搜索引擎库,提供了...
Lucene是一个高度优化的、用Java编写的搜索引擎库,它为开发人员提供了强大的文本搜索功能,使得构建高性能的全文检索应用变得简单。在这个最新的8.5.1版本中,我们可能看到一些性能提升、新特性以及错误修复。 ...
描述中提到的“对SQL Server数据库表,用多线程,高速创建索引”,是指在构建Lucene.NET索引时,采用了多线程技术来提升性能。这种做法可以充分利用多核处理器的计算能力,将数据处理任务分散到多个线程中,从而加快...
开发者可以使用`IndexWriter`类来管理索引,它支持并发写入和实时搜索。此外,Lucene还引入了倒排索引,这是一种高效的存储方式,通过记录每个词项在哪些文档中出现,来实现快速的查找。 3. **查询解析与执行** ...
在实际应用中,我们还可以扩展Lucene的功能,例如使用Filter和Collector来优化查询性能,或者实现自定义评分函数以进行更复杂的查询策略。此外,多线程索引和搜索也是大型项目中常见的需求,可以通过适当的同步机制...
Lucene是用java实现的成熟的、免费的开源项目,是著名的Apache Jakarta大家庭的一员,并且基于在Apache软件许可 [ASF, License]。同样,Lucene是当前与近几年内非常流行的免费的Java信息搜索(IR)库。
- **创建索引**:客户端(可以是浏览器或 Java 程序)用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr 服务器根据 XML 文档添加、删除或更新索引。 - **搜索索引**:客户端用 GET 方法向 ...
图片使用的七牛云,属性设置在类cn.coderzhx.utils.VariableName里 如果不想用七牛云那么修改为为tomcat的upload目录 如果仅仅是本地运行项目的话,七牛云必须得有域名才行所以不能用,使用七牛云的模块就不能用了,也...
自主研发的中文分词技术,速度超过3MB/s,准确率达到90%以上,大大超过网上各种开源中文分词技术,几乎可以和中科院的ICTCLAS相媲美,结合当前最成熟的Lunece的.net版本,实现了功能强大执行快速的全文检索引擎...
4. **Lunece** 注意,这里可能是打错了,正确应该是“Lucene”。在Lucene项目中,通常会包含许多示例代码,这些代码覆盖了从基础到进阶的各种用法。通过查看这些代码,你可以学习如何使用`TokenStream`进行自定义的...
<br> 自主研发的中文分词技术,速度超过3MB/s,准确率达到90%以上,大大超过网上各种开源中文分词技术,几乎可以和中科院的ICTCLAS相媲美,结合当前最成熟的Lunece的.net版本,实现了功能强大执行快速的全文检索...
自主研发的中文分词技术,速度超过3MB/s,准确率达到90%以上,大大超过网上各种开源中文分词技术,几乎可以和中科院的ICTCLAS相媲美,结合当前最成熟的Lunece的.net版本,实现了功能强大执行快速的全文检索引擎。...
5.自主研发的中文分词技术,速度超过3MB/s,准确率达到90%以上,大大超过网上各种开源中文分词技术,几乎可以和中科院的ICTCLAS相媲美,结合当前最成熟的Lunece的.net版本,实现了功能强大执行快速的全文检索引擎。...
5.自主研发的中文分词技术,速度超过3MB/s,准确率达到90%以上,大大超过网上各种开源中文分词技术,几乎可以和中科院的ICTCLAS相媲美,结合当前最成熟的Lunece的.net版本,实现了功能强大执行快速的全文检索引擎。...