- 浏览: 1068060 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (639)
- 服务器配置篇 (58)
- hibernate篇 (14)
- spring篇 (33)
- struts篇 (28)
- JS篇 (46)
- 其他技术篇 (46)
- 数据库集群配置 (6)
- JAVA基础相关 (48)
- 分布式框架HadHoop的应用 (2)
- FLEX篇 (8)
- SQLSERVER技术 (32)
- Android学习 (13)
- amchart学习笔记 (1)
- openfire+smark搭建即时通讯 (9)
- Linux学习 (18)
- Oracle数据库 (15)
- 网站优化技术 (12)
- mysql数据库 (2)
- 项目学习总结 (18)
- 工具类(JAVA) (12)
- 工具类(JS) (2)
- 设计模式 (10)
- Lucene学习 (24)
- EJB3学习 (6)
- Sphinx搜索引擎 (3)
- 工作中用到的软件小工具 (5)
- .NET (49)
- JAVA 连接SQLSERVER2008步骤 (1)
- MongoDB (19)
- Android手机开发 (3)
- Maven (6)
- vue (9)
- Shiro (4)
- mybatis (3)
- netty框架 (1)
- SpringCloud (3)
- spring-cloud (7)
- Git (1)
- dubbo (2)
- springboot (13)
- rocketmq (1)
- git学习 (2)
- kafka服务器 (2)
- linux (10)
- WEB系统辅助项目 (1)
- jenkins (2)
- docker (4)
- influxdb (3)
- python (2)
- nginx (1)
最新评论
-
jiangfuofu555:
这样数据量大,效率怎么样?
sqlserver 实现分页的前台代码 以及后台的sqlserver语句 -
w156445045:
博主请问下,如何做到实时的刷新呢,
另外我后台是Java 谢谢 ...
web 版本的汽车仪表盘,非常好看。还有各种图形 -
jackyin5918:
<transportConnector name=&qu ...
ActiveMQ的activemq.xml详细配置讲解 -
握着橄榄枝的人:
你这个不是spring1.x的吧
spring1.x使用AOP实例 -
xiaophai:
全乱套了!
openfire+spark搭建完美的及时通讯
- package com.lucene;
- import java.io.IOException;
- import org.apache.lucene.analysis.standard.StandardAnalyzer;
- import org.apache.lucene.document.Document;
- import org.apache.lucene.document.Field;
- import org.apache.lucene.index.IndexWriter;
- import org.apache.lucene.index.Term;
- import org.apache.lucene.queryParser.QueryParser;
- import org.apache.lucene.search.Hits;
- import org.apache.lucene.search.IndexSearcher;
- import org.apache.lucene.search.Query;
- public class UpdateDocument {
- private static String path = "d:/index";
- public static void main(String[] args){
- // addIndex();
- updateIndex();
- search("李四");
- search("王五");
- }
- public static void addIndex(){
- try {
- IndexWriter write = new IndexWriter(path,new StandardAnalyzer(),true);
- Document doc = new Document();
- doc.add(new Field("id","123456",Field.Store.YES,Field.Index.UN_TOKENIZED));
- doc.add(new Field("userName","张三",Field.Store.YES,Field.Index.TOKENIZED));
- doc.add(new Field("comefrom","北京",Field.Store.YES,Field.Index.TOKENIZED));
- write.addDocument(doc);
- write.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- public static void updateIndex(){
- try {
- IndexWriter write = new IndexWriter(path,new StandardAnalyzer(),false);
- Document docNew = new Document();
- docNew.add(new Field("id","123456",Field.Store.YES,Field.Index.UN_TOKENIZED));
- docNew.add(new Field("userName","王五",Field.Store.YES,Field.Index.TOKENIZED));
- Term term = new Term("id","123456");
- /**
- 调用updateDocument的方法,传给它一个新的doc来更新数据,
- Term term = new Term("id","1234567");
- 先去索引文件里查找id为1234567的Doc,如果有就更新它(如果有多条,最后更新后只有一条)。如果没有就新增.
- 数据库更新的时候,我们可以只针对某个列来更新,而lucene只能针对一行数据更新。
- */
- write.updateDocument(term, docNew);
- write.close(); //注意在这里一定要关闭write
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- public static Query queryParser(String str){
- QueryParser queryParser = new QueryParser("userName", new StandardAnalyzer());
- try {
- Query query = queryParser.parse(str);
- return query;
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
- public static void search(String str){
- try {
- IndexSearcher search = new IndexSearcher(path);
- Query query = queryParser(str);
- Hits hits = search.search(query);
- if(hits==null){
- return;
- }
- if(hits.length() == 0){
- System.out.println(" 没有搜索到'" + str+"'");
- return;
- }
- for (int i = 0; i < hits.length(); i++) {
- Document doc = hits.doc(i);
- System.out.println("id = "+hits.id(i));
- System.out.println("own id = " + doc.get("id"));
- System.out.println("userName = "+doc.get("userName"));
- System.out.println("come from = "+doc.get("comefrom"));
- System.out.println("");
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- Lucene_3.0_原理与代码分析.pdf (4.6 MB)
- 下载次数: 54
发表评论
-
使用Lucene-Spatial实现集成地理位置的全文检索
2015-05-27 17:33 1343Lucene通过Spatial包提供了对基于地理位置的 ... -
Lucene4.10.2开发之高亮显示
2015-05-05 23:13 602转载请注明,原创地址,谢谢配合! http://qindo ... -
bobo-browse
2011-02-10 10:22 2809bobo-browse 是一款用java写的lucene扩展组 ... -
Lucene 3建立索引和查询索引详解
2010-12-22 23:02 1847public void index() throws Corr ... -
Lucene3 查询索引
2010-12-22 22:46 1779package lucene3; import java.i ... -
Lucene3 建立索引
2010-12-22 22:25 1408Lucene3在建立索引的API上有比较大的变化。直接上程序: ... -
Lucene 3.0的简单解析及变化
2010-12-22 21:59 1148一、 概述 Lucene3 ... -
Lucene分词器之庖丁解牛
2010-12-22 07:47 3499注意:这里配置环境变量要重新启动系统后生效 我现在测试 ... -
Lucene从结果中取出数据
2010-12-21 20:23 1237有些应用,比如我们首先要搜索一个Person的索引文件,然后通 ... -
Lucene过滤器
2010-12-21 20:05 3799有的应用有些要求,对于某类型的内容即使满足条件了,但是也不能被 ... -
Lucene对于短语匹配查询的用法
2010-12-21 17:41 1384通常对于ID查询或者是比较确定字段内容的查询,我们就用: T ... -
Lucene 对所查的结果进行排序
2010-12-20 23:01 1227前面介绍完查询以后,现在要对查询结果进行排序的显示。 代码: ... -
Lucene 搜索方法(模糊搜索)
2010-12-20 11:54 3523LUCENE提供了一种模糊搜 ... -
Lucene 搜索方法(多短语搜索)
2010-12-20 11:42 1197短语搜索解决了短语搜索的问题,在很多情况下,用户输入某个关键字 ... -
Lucene 搜索方法(短语搜索)
2010-12-20 11:15 1830用户在搜索的时候,更多的情况是输入一个以上的关键字,这些关键字 ... -
Lucene 搜索方法(前缀搜索)
2010-12-20 10:27 1890PrefixQuery是一种前缀搜索,在检索的时候,常常需要进 ... -
Lucene 的索引读取工具(IndexReader)
2010-12-19 23:00 1616Lucene有一个很重要的工具IndexReader负责对索引 ... -
Lucene 搜索方法(范围搜索)
2010-12-19 22:54 1298在某些情况下,用户需要查找一定范围内的文档,比如时间,ID等。 ... -
Lucene 搜索方法(布尔搜索)
2010-12-19 22:04 1625布尔搜索: 布尔查询的对象中,包含一个子句的集合。各种子句间都 ... -
Lucene 搜索方法(词条搜索)
2010-12-19 21:15 1266词条搜索是LUCENE最为简单的一种搜索方式,通过对某个固定的 ...
相关推荐
IndexWriter提供了如addDocument()和updateDocument()的方法,用于处理单个文档的增删改操作。 三、全量索引 全量索引则是对所有数据重新构建索引的过程。在系统启动时、数据库初始化或数据发生重大变化时,全量...
Lucene 提供了 `IndexWriter` 的 `updateDocument()` 方法来替换现有文档。 总结,Lucene5 全文搜索 demo 展示了如何利用 Lucene 的核心组件创建和搜索索引。从索引的构建到查询的执行,每个步骤都涉及到对 Lucene ...
1. **更新与删除**:Lucene提供了updateDocument和deleteDocuments方法来更新已存在的文档或删除指定的文档。 2. **性能优化**:可以通过设置批处理大小、使用多线程、利用缓存等方式优化索引和查询性能。 3. **...
- 增量索引:当新数据到来时,无需重新构建整个索引,而是使用 IndexWriter 的 UpdateDocument 或 AddDocument 方法更新已存在的索引。 - 倒排索引:Lucene 使用倒排索引来加速搜索,每个词项对应一组包含它的文档...
8. **更新和删除(Update & Delete)**:Lucene支持对索引的动态更新和删除操作,保持数据的实时性。 在《Lucene in Action Source Code》part2中,你可以找到以下示例: - **workspace**:这是一个开发工作区,...
在 Lucene.NET 中,可以通过 IndexWriter 类的 AddDocument 和 UpdateDocument 方法来实现增量索引。 **3. 更新索引** 更新索引涉及到已存在文档的更改。Lucene.NET 不直接支持文档级别的更新,而是采用删除旧文档...
同时,通过 IndexWriter 的 updateDocument 方法,可以更新已存在的文档。 **Lucene 的扩展与应用** Lucene 本身只是一个核心库,实际应用中通常会结合 Solr 或 Elasticsearch 这样的搜索引擎服务器。它们提供了更...
5. **更新与删除**:当文档内容改变或需要删除时,IndexWriter提供了相应的updateDocument和deleteDocuments方法。 四、优化与进阶 1. **分片与分布式搜索**:对于大规模数据,可以通过分片技术将索引分散到多台...
Lucene提供了Optimize方法用于合并段以提高性能,而UpdateDocument方法可以替换已存在的文档。 6. **错误处理和资源释放**:在使用完毕后,记得关闭所有打开的流和对象,如IndexWriter、IndexReader、Searcher等,...
public void updateDocument(String id, Document doc) {...} public void deleteDocument(String id) {...} } public class QueryParser { public Query parse(String queryText) {...} } public class Search...
- **Update Handler**:Solr提供了多种Update Handler,例如Direct Update Handler和Document Update Handler,它们接收单个文档或者批量文档的更新请求,然后进行相应的索引更新,而无需重新构建整个索引。...
- 或者,如果支持,直接使用`IndexWriter`的`updateDocument`方法,通过一个`Term`来定位文档,并提供新的`Document`替换。 6. **分页查询** - 使用`TopScoreDocCollector`或`TopDocsCollector`收集指定数量的...
源码中可能使用了`IndexWriter.addDocument()`或`IndexWriter.updateDocument()`方法,前者用于添加新文档,后者用于更新已存在的文档。 3. **搜索(Searching)**:`IndexSearcher`和`QueryParser`类是进行搜索的...
- **UpdateDocument**:替换已存在文档,而不是删除后再新建,节省空间和时间。 6. **内存与磁盘结构** - **FieldCache**:缓存文档字段值,提高查询速度,但需注意内存使用。 - **RAMDirectory**:内存中的索引...
4. **更新索引中的Document**:介绍了如何在不重建整个索引的情况下更新已存在的Document,利用`IndexWriter`的`updateDocument()`方法。 5. **分页搜索**:由于Lucene的查询特性,需要实现分页查询策略,通常先...
如果已有文档需要更新,可以使用`updateDocument()`方法。 4. 提交更改:所有文档添加完成后,使用`commit()`方法保存索引,确保数据持久化。 二、执行查询 Lucene提供了一个强大的查询解析器,能将用户输入的...
8. **更新与删除(Update & Delete)**:一旦索引建立,可以添加新文档,更新已有文档,甚至删除不再需要的文档。 在`lucene-1.4-final`这个压缩包中,包含了Lucene 1.4版本的源代码,你可以深入研究其内部实现,...
7. **更新和删除索引**: 如果需要修改已索引的数据,可以使用`IndexWriter`的`updateDocument()`方法。同样,如果要删除某个文档,可以使用`deleteDocuments()`方法,传入相应的查询条件。 Lucene 5.2.1 版本还引入...
使用`IndexWriter`的`updateDocument()`方法可以替换现有文档,而`deleteDocuments()`方法允许删除匹配特定查询条件的文档。 7. **优化与性能** 为了提高检索性能,可以定期执行索引合并(`optimize()`),但这...
当需要更新已有索引中的某个文档时,我们不能直接修改,而是需要创建一个新的Document对象,并使用`writer.updateDocument()`方法。例如,以下代码片段展示了如何更新一个文档: ```java IndexWriterConfig iwc = ...