艾伟_转载:Lucene.net操作索引库

 


删除 (软删除,仅添加了删除标记。调用IndexWriter.Optimize() 后真正删除)
IndexReader reader = IndexReader.Open(directory);

// 删除指定序号(DocId)的 Document。
reader.Delete(123);

// 删除包含指定 Term 的 Document。
reader.Delete(new Term(FieldValue, "Hello"));

// 恢复软删除。
reader.UndeleteAll();

reader.Close();

增量更新 (只需将 create 参数设为 false,即可往现有索引库添加新数据。)

Directory directory = FSDirectory.GetDirectory("index", false);

IndexWriter writer = new IndexWriter(directory, analyzer, false);

writer.AddDocument(doc1);

writer.AddDocument(doc2);

writer.Optimize();

writer.Close();

 

 

时间: 2024-09-21 08:45:44

艾伟_转载:Lucene.net操作索引库的相关文章

Lucene.net操作索引库

删除 (软删除,仅添加了删除标记.调用IndexWriter.Optimize() 后真正删除) IndexReader reader = IndexReader.Open(directory); // 删除指定序号(DocId)的 Document. reader.Delete(123); // 删除包含指定 Term 的 Document. reader.Delete(new Term(FieldValue, "Hello")); // 恢复软删除. reader.Undelete

艾伟_转载:Lucene.Net操作上的一些技巧

以下例子采用 Lucene.NET 1.9 版本,可取去 Lucene.Net 下载. 1. 基本应用 using System;using System.Collections.Generic;using System.Text;using Lucene.Net;using Lucene.Net.Analysis;using Lucene.Net.Analysis.Standard;using Lucene.Net.Documents;using Lucene.Net.Index;using

艾伟_转载:Lucene.net多字段多索引目录搜索

Lucene.net是目前在.net环境中被普遍使用的全文索引的开源项目,这次在项目的开发中也使用它进行全文索引.在开发过程中碰到一些小问题就是对多字段和多索引目录进行搜索. 1.多字段搜索就是同时要一个以上的字段中的内容进行比较搜索,类似概念在SQL中就是select * from Table where a like '%query%' or b like '%query%'. Lucene.net中的单个字段查询大家都比较熟悉,这里对字段content进行搜索 Query query =

艾伟_转载:Lucene.Net学习心得

一.Lucene点滴 (发音为['lusen]),我经常就读鹿神,是头活蹦乱跳的好鹿,研究它吧,保证感觉它很神!Lucene是一个非常优秀的开源的全文搜索引擎,我们可以在它的上面开发出各种全文搜索的应用来.Lucene在国外有很高的知名度,现在已经是Apache的顶级项目. 二.倒排索引原理简述 Lucene是一个高性能的java全文检索工具包,它使用的是倒排文件索引结构.具体解释算法理论就不讲了,直接用例子来说明吧,如果你认真仔细的读懂例子,真正领会了其中的思想,你肯定就明白了Lucene索引

艾伟_转载:揭示同步块索引(上):从lock开始

大家都知道引用类型对象除实例字段的开销外,还有两个字段的开销:类型指针和同步块索引(SyncBlockIndex).同步块索引这个东西比起它的兄弟类型指针更少受人关注,显得有点冷落,其实此兄功力非凡,在CLR里可谓叱咤风云,很多功能都要借助它来实现. 接下来我会用三篇来介绍同步块索引在.NET中的所作所为. 既然本章副标题是从lock开始,那我就举几个lock的示例: 代码1 1: public class Singleton 2: { 3: private static object lock

艾伟_转载:基于.NET平台的Windows编程实战(四)—— 数据库操作类的编写

本系列文章导航 基于.NET平台的Windows编程实战(一)--前言 基于.NET平台的Windows编程实战(二)-- 需求分析与数据库设计 基于.NET平台的Windows编程实战(四)-- 数据库操作类的编写 基于.NET平台的Windows编程实战(五)-- 问卷管理功能的实现 基于.NET平台的Windows编程实战(六)-- 题目管理功能的实现 大家都知道本系统的正常运行少不了数据库操作这一块,且其在本系统中具有决定性作用,可以说没有它的操作系统将无法运行,故在本节课程中,专门把针

艾伟_转载:在PC上显示和操作Windows Mobile

简介 在Windows Mobile和Wince开发中,直接在PC上操控相关设备是必不可少的步骤.本文讲述在PC上显示和操作Windows Mobile的方法,包括使用ActiveSync Remote Display和MyMobiler两种方法. 安装ActiveSync 不管那种方法,安装ActiveSync是必须的,请到下面链接进行下载安装ActiveSync 4.5. ActiveSync Remote Display ActiveSync Remote Display是MS提供的远程显

艾伟_转载:企业库缓存依赖的实现-基于文件依赖

最近在做项目的时候,采用用Codesmith和Nettiers生成的框架来实现,生成的代码核心是基于企业库的.所以最近在恶补企业库,对于缓存的学习当然是必不可少的,尤其是经常要用到得缓存依赖,这里我用到的是文件依赖来举例子,其他的都大同小异,主要就是要实现ICacheItemExpiration中的返回值类型为bool类型的HasExpired方法,来控制到期与否,实现此方法是关键所在.下面是程序清单,欢迎大家指正: step1 实现缓存到期接口,此类就为缓存项依赖的类,为缓存依赖的核心,尤其是

艾伟_转载:Lucene提供的条件判断查询

第一.按词条搜索 - TermQuery query = new TermQuery(new Term("name","word1"));hits = searcher.search(query); 这样就可以把 field 为 name 的所有包含 word1 的文档检索出来了. 第二."与或"搜索 - BooleanQuery 它实际是一个组合 query 看看下面的代码:  query1 = new TermQuery(new Term(&