- 浏览: 372117 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (292)
- jbpm3.2 (4)
- hibernate (1)
- struts (2)
- spring (7)
- oracle (20)
- TCP/UDP (3)
- SpringSide (4)
- maven (4)
- eclipse插件 (11)
- 模板引擎 (2)
- javascript (4)
- 设计模式 (2)
- 工作中遇到异常及解决 (3)
- java文件编译问题 (1)
- ehcache应用 (1)
- java反射 (1)
- jbpm4 (1)
- Google-Gson (1)
- Jquery (6)
- XML (5)
- 工作记事 (2)
- flash builder 4 (1)
- Lucene (8)
- struts2 (1)
- AspectJ (1)
- spring proxool连接池配置 (1)
- StringUtils (1)
- spring security (5)
- JAVA点滴 (9)
- jbpm4.3 (1)
- ACL (0)
- 线程 (7)
- Java线程:新特征-线程池 (1)
- MemCache (5)
- compass (0)
- NIO (2)
- zookeeper (4)
- 并发 (2)
- redis (9)
- Nginx (5)
- jvm (1)
- 互联网 (24)
- shell (3)
- CAS (1)
- storm (4)
- 数据结构 (3)
- MYSQL (3)
- fsdfsdfsd (0)
- hadoop (19)
- hive (3)
- IntelliJ (3)
- python (3)
- 23423 (0)
- spark (7)
- netty (9)
- nmon (1)
- hbase (8)
- cassandra (28)
- kafka (2)
- haproxy (3)
- nodejs (3)
- ftp (1)
最新评论
-
记忆无泪:
遇到这个问题我用的sed -i 's/\r$//' /mnt/ ...
CentOS6 Shell脚本/bin/bash^M: bad interpreter错误解决方法 -
alenstudent:
Windows 下Nexus搭建Maven私服 -
dandongsoft:
lucene3+IK分词器 改造 lucene2.x+paoding -
duanyanrui:
学习了,支持
Google-Gson -
yscyfy:
这是你直接翻译过来的???
Google-Gson
首先来认识下全文检索的工作流程:
java Project 目录结构如图:
package com.lebuqi.lucene; import java.io.IOException; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.index.CorruptIndexException; 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.Filter; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.Query; import org.apache.lucene.search.ScoreDoc; import org.apache.lucene.search.TopDocs; import org.junit.Test; import com.lebuqi.lucene.utils.File2Document; /** * @Title: HelloWord.java * @Package com.lebuqi.lucene * @Description: TODO(添加描述) * @author longzhun * @date 2011-8-6 下午07:13:56 * @version V1.0 */ public class HelloWord { String filePath = "G:\\work5\\luceneDemo\\luceneDatasource\\IndexWriter addDocument's a javadoc .txt"; String indexPath = "G:\\work5\\luceneDemo\\luceneIndex"; Analyzer analyzer = new StandardAnalyzer(); /** * 创建索引 * IndexWriter是用来操作(增,删,改)索引库的 */ @Test public void createIndex() throws Exception{ Document doc = File2Document.file2Document(filePath); IndexWriter indexWriter = new IndexWriter(indexPath,analyzer,true,MaxFieldLength.LIMITED); indexWriter.addDocument(doc); indexWriter.close(); } /** * 搜索 * @throws IOException * @throws CorruptIndexException */ @Test public void seach() throws Exception{ String queryString = "document"; String[] fields = {"name","content"}; QueryParser parser = new MultiFieldQueryParser(fields, analyzer); Query query = parser.parse(queryString); IndexSearcher indexSearcher = new IndexSearcher(indexPath); Filter filter = null; TopDocs topDocs = indexSearcher.search(query, filter, 10000); System.out.println("总共有"+topDocs.totalHits+"条匹配结果"); for(ScoreDoc scoreDoc:topDocs.scoreDocs){ int docSn = scoreDoc.doc; //文档内部编号 Document doc = indexSearcher.doc(docSn); //根据文档编号取出相应文档 // Field f = doc.getField("name"); // f.stringValue(); System.out.println("name ="+doc.get("name")); System.out.println("content ="+doc.get("content")); System.out.println("size ="+doc.get("size")); System.out.println("path ="+doc.get("path")); } } }
File2Document .java
package com.lebuqi.lucene.utils; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStreamReader; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.document.Field.Index; import org.apache.lucene.document.Field.Store; /** * @Title: File2Document.java * @Package com.lebuqi.lucene.utils * @Description: TODO(添加描述) * @author longzhun * @date 2011-8-6 下午07:46:51 * @version V1.0 */ public class File2Document { public static Document file2Document(String path){ File file = new File(path); //文件.name,content.size,path Document doc = new Document(); doc.add(new Field("name", file.getName(),Store.YES,Index.ANALYZED )); doc.add(new Field("content", readFileContent(file),Store.YES,Index.ANALYZED )); doc.add(new Field("size", String.valueOf(file.length()),Store.YES,Index.NOT_ANALYZED)); doc.add(new Field("path", file.getAbsolutePath(),Store.YES,Index.NO )); return doc; } private static String readFileContent(File file) { try { BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file))); StringBuffer content = new StringBuffer(); for(String line = null;(line = br.readLine())!= null;){ content.append(line).append("\n"); } return content.toString(); } catch (Exception e) { throw new RuntimeException(e); } } }
发表评论
-
利用Spring AOP处理自定义注解
2015-07-08 16:09 3079Spring3.0中加入了对缓存的注解支持,即当你使用ehc ... -
spring ioc 原理 spring aop原理
2015-05-15 12:56 9721.关于spring ioc 这段时间也着实好好的看了下sp ... -
分页检索及完善站内搜索
2012-02-27 22:40 898public static final int pageSi ... -
lucene3+IK分词器 改造 lucene2.x+paoding
2012-02-27 21:12 1426public void createIndex(Article ... -
即时更新索引思路
2012-02-26 00:05 9021.用户发表一篇文章,即时添加索引. 2.用户修改一篇 ... -
更新索引策略之一(非繁忙时刻更新)
2012-02-25 22:54 716半夜更新:也可以叫做非繁忙时段更新。 思路:从上次遍历 ... -
lucene与数据表比较
2012-02-25 17:01 727LUCENE 数据表 说明 Document ... -
lucene+paoding实现全文检索
2012-02-25 16:42 1261Lucene的主要逻辑图 Lucene包括两块:一是文 ... -
Spring整合 RMI
2012-02-23 19:18 1175Spring整合RMI的原理 客户端的核心是RmiProxy ... -
自己写个简单的IOC容器
2012-02-13 22:19 770第一次看spring的时候 ... -
Lucene2.4 索引库位置介绍
2011-08-07 17:35 788在Lucene第一个简单实例中,我们是直接把文件位置index ... -
详解 Spring 3.0 基于 Annotation 的依赖注入实现
2011-06-01 11:09 812使用 @Repository、@Service、@Contro ... -
SpringContextUtil
2011-04-29 16:24 3519import org.springframework.cont ...
相关推荐
这是第二部分,两个部分需要一起下载后,放在同一级目录,解压即可。 目录 第1篇 了解开源软件 第1章 开源软件概述 2 1.1 开源软件的理解 2 1.2 开源软件的定义 3 1.3 开源软件定义的意义 5 1.4 开源软件和其他...
- **去掉第一个opencms**:配置Apache使其不再包含OpenCMS名称。 - **去掉第二个opencms**:进一步优化URL,使得最终的网站地址更加简洁。 - **集成Apache、Tomcat和OpenCms的意义**:通过这种方式,可以实现静态...
- **2.3.2 去掉第一个opencms**:调整Apache配置文件,确保URL不包含“opencms”。 - **2.3.3 去掉第二个opencms**:进一步优化URL结构,提高用户体验。 - **2.3.4 集成Apache、Tomcat和OpenCms的意义**:这样的集成...
- 修改Apache配置文件,移除第一个opencms。 - **2.3.3 去掉第二个opencms** - 继续修改Apache配置文件,去掉第二个opencms。 - **2.3.4 集成Apache、Tomcat和OpenCms的意义** - 提高系统的稳定性和安全性; -...
**3.2 一个简单的例子** - **3.2.1 SolrSchema设计**:定义需要索引的字段及其属性。 - **3.2.2 构建索引**:使用Solr API或SolrJ将数据导入索引中。 - **3.2.3 搜索测试**:通过发送查询请求到Solr服务器,获取...
**3.2 一个简单的例子** - **3.2.1 SolrSchema设计**:通过一个具体的例子展示如何设计SolrSchema。 - **3.2.2 构建索引**:演示如何使用Solr API或其他工具构建索引。 - **3.2.3 搜索测试**:展示如何通过Solr进行...
- **3.2.1 SolrSchema设计**:为示例项目设计一个简单的索引结构。 - **3.2.2 构建索引**:向Solr添加文档以构建索引。 - **3.2.3 搜索测试**:执行搜索测试,验证索引是否正确建立。 ##### 3.3 搜索引擎的规划设计...
- **1.2.1 Solr使用Lucene并且进行了扩展**:Solr是一个开源的高性能搜索引擎,它基于Lucene构建,提供了更高级别的功能和服务,如全文检索、自动完成和实时更新等。 - **1.2.2 Schema(模式)**:Solr使用Schema来...
- **去掉第一个opencms**: 修改Apache配置文件,去除默认路径前缀。 - **去掉第二个opencms**: 继续修改配置,使URL更简洁。 - **集成意义**: 通过Apache与Tomcat的集成,提高网站性能和稳定性。 ##### 2.4 ...
- **去掉第一个opencms**: - 修改Apache配置文件,确保URL不包含"opencms"。 - **去掉第二个opencms**: - 调整Tomcat配置,进一步优化URL结构。 - **集成意义**: 提升用户体验,简化URL结构,增强安全性。 ##### ...