- 浏览: 616481 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (228)
- io (15)
- cluster (16)
- linux (7)
- js (23)
- bizarrerie (46)
- groovy (1)
- thread (1)
- jsp (8)
- static (4)
- cache (3)
- protocol (2)
- ruby (11)
- hibernate (6)
- svn (1)
- python (8)
- spring (19)
- gma (1)
- architecture (4)
- search (15)
- db (3)
- ibatis (1)
- html5 (1)
- iptables (1)
- server (5)
- nginx (4)
- scala (1)
- DNS (1)
- jPlayer (1)
- Subversion 版本控制 (1)
- velocity (1)
- html (1)
- ppt poi (1)
- java (1)
- bizarrerie spring security (1)
最新评论
-
koreajapan03:
楼主啊,好人啊,帮我解决了问题,谢谢
自定义过滤器时,不能再使用<sec:authorize url="">问题 -
snailprince:
请问有同一页面,多个上传实例的例子吗
webuploader用java实现上传 -
wutao8818:
姚小呵 写道如何接收server返回的参数呢?例如你返回的是“ ...
webuploader用java实现上传 -
姚小呵:
如何接收server返回的参数呢?例如你返回的是“1”,上传的 ...
webuploader用java实现上传 -
zycjf2009:
你好,我想用jplayer做一个简单的播放器,但是因为对js不 ...
jplayer 实战
IndexSearcher searcher = new IndexSearcher(path); //搜索字段。值 Term t=new Term(searchType,searchKey); //term产生query Query q=new TermQuery(t); //<document,frequency>枚举对象TermDocs TermDocs termDocs=searcher.getIndexReader().termDocs(t); while(termDocs.next()){ System.out.println(termDocs.freq());//searchKey在文档中出现次数 //包含searchKey的文档。 System.out.println(searcher.getIndexReader().document(termDocs.doc())); }
引用
Field
Store.COMPRESS//被压缩后存储
Store.YES //被存储
Store.NO //不被存储
Index.NO//不索引
Index.TOKENIZED//分词后索引
Index.UN_TOKENIZED//不分词索引
Index.NO_NORMS//不使用Analyzer来索引Field
Store.COMPRESS//被压缩后存储
Store.YES //被存储
Store.NO //不被存储
Index.NO//不索引
Index.TOKENIZED//分词后索引
Index.UN_TOKENIZED//不分词索引
Index.NO_NORMS//不使用Analyzer来索引Field
引用
IndexWriter(String path,Analyzer a,boolean create);
IndexWriter有三个构造器,第一个参数都差不多的意思,路径。关键的第三个参数要小心一些。如果是第一次创建设置为true,如果是爹如此更新就应该设置为false,否则原来创建的索引就被删除了!
IndexWriter有三个构造器,第一个参数都差不多的意思,路径。关键的第三个参数要小心一些。如果是第一次创建设置为true,如果是爹如此更新就应该设置为false,否则原来创建的索引就被删除了!
Directory ram = new RAMDirectory(); IndexWriter writer = new IndexWriter(ram, new StandardAnalyzer(), true, MaxFieldLength.UNLIMITED); List<String> valueList = new ArrayList<String>(); valueList.add("Dell"); valueList.add("eDll"); valueList.add("ledl"); valueList.add("llDe"); for (int i = 0; i < 100; i++) { Document doc = new Document(); Field field = new Field("name", valueList.get(Double.valueOf( Math.random() * 4).intValue()), Field.Store.NO, Field.Index.NOT_ANALYZED); doc.add(field); writer.addDocument(doc); System.out.println(doc); } writer.close(); Searcherd searcherd = new Searcherd(); searcherd.setDirectory(ram); searcherd.search("name", "Dell");
引用
writer.close();
关闭索引器,并将在IO缓存上的数据都写入磁盘,关闭流。如果没有关闭,索引目录除了segments外一无所有。忘记关闭,将导致索引数据滞留在缓存中,未写入磁盘,有可能导致目录锁未释放,导致下一次加入索引文件时,无法加入。
写入锁
package org.apache.lucene.index.IndexWriter IndexWriter的构造器都调用这个方法。 private void init(Directory d, Analyzer a, final boolean create, boolean closeDir, IndexDeletionPolicy deletionPolicy, boolean autoCommit, int maxFieldLength, IndexingChain indexingChain, IndexCommit commit) throws CorruptIndexException, LockObtainFailedException, IOException { this.closeDir = closeDir; directory = d; analyzer = a; setMessageID(defaultInfoStream); this.maxFieldLength = maxFieldLength; if (indexingChain == null) indexingChain = DocumentsWriter.DefaultIndexingChain; if (create) { // Clear the write lock in case it's leftover: directory.clearLock(WRITE_LOCK_NAME); } Lock writeLock = directory.makeLock(WRITE_LOCK_NAME); if (!writeLock.obtain(writeLockTimeout)) // obtain write lock throw new LockObtainFailedException("Index locked for write: " + writeLock); this.writeLock = writeLock; // save it try { if (create) { // Try to read first. This is to allow create // against an index that's currently open for // searching. In this case we write the next // segments_N file with no segments: boolean doCommit; try { segmentInfos.read(directory); segmentInfos.clear(); doCommit = false; } catch (IOException e) { // Likely this means it's a fresh directory doCommit = true; } if (autoCommit || doCommit) { // Always commit if autoCommit=true, else only // commit if there is no segments file in this dir // already. segmentInfos.commit(directory); synced.addAll(segmentInfos.files(directory, true)); } else { // Record that we have a change (zero out all // segments) pending: changeCount++; } } else { segmentInfos.read(directory); if (commit != null) { // Swap out all segments, but, keep metadata in // SegmentInfos, like version & generation, to // preserve write-once. This is important if // readers are open against the future commit // points. if (commit.getDirectory() != directory) throw new IllegalArgumentException("IndexCommit's directory doesn't match my directory"); SegmentInfos oldInfos = new SegmentInfos(); oldInfos.read(directory, commit.getSegmentsFileName()); segmentInfos.replace(oldInfos); changeCount++; if (infoStream != null) message("init: loaded commit \"" + commit.getSegmentsFileName() + "\""); } // We assume that this segments_N was previously // properly sync'd: synced.addAll(segmentInfos.files(directory, true)); } this.autoCommit = autoCommit; setRollbackSegmentInfos(segmentInfos); docWriter = new DocumentsWriter(directory, this, indexingChain); docWriter.setInfoStream(infoStream); docWriter.setMaxFieldLength(maxFieldLength); // Default deleter (for backwards compatibility) is // KeepOnlyLastCommitDeleter: deleter = new IndexFileDeleter(directory, deletionPolicy == null ? new KeepOnlyLastCommitDeletionPolicy() : deletionPolicy, segmentInfos, infoStream, docWriter); if (deleter.startingCommitDeleted) // Deletion policy deleted the "head" commit point. // We have to mark ourself as changed so that if we // are closed w/o any further changes we write a new // segments_N file. changeCount++; pushMaxBufferedDocs(); if (infoStream != null) { message("init: create=" + create); messageState(); } } catch (IOException e) { this.writeLock.release(); this.writeLock = null; throw e; }
引用
限制每个Field中词条的数量
因为在分析和存储前,信息都占据于内存空间,巨大的数据会导致内存不足。
IndexWriter.setMaxFieldLength设置。立即生效。
因为在分析和存储前,信息都占据于内存空间,巨大的数据会导致内存不足。
IndexWriter.setMaxFieldLength设置。立即生效。
writer.addDocument writer.setMaxFieldLength writer.addDocument
第三行已经生效。
发表评论
-
手机之家网站搜索系统Lucene应用
2009-07-30 10:36 1570手机之家搜索系统架构 http://www.luanxian ... -
中文分词
2009-06-25 17:33 3054imdict-chinese-analyzer http:// ... -
如何利用 lucene score机制来实现 关键字 竞价排名
2009-05-08 09:46 3447lucene内置的排序方式是按照一定算法的score来排列,d ... -
IndexSearcher
2009-05-06 00:10 1574IndexSearcher indexSearcher.. ... -
IndexWriter合并索引
2009-05-05 17:46 3146IndexWriter 提供一个接口 ... -
lucene几个类的含义3
2009-05-05 16:24 1243引用.fdx .fdt .fdt=>存储具有Store. ... -
lucene几个类的含义2
2009-05-05 15:32 2307索引文件里的文件命名有什么规律 引用 _9.cfs _9.c ... -
solr1.3已经支持分布式搜索
2009-04-17 11:47 1381What is Distributed Search? Wh ... -
solr 分词 后 结果
2009-04-17 11:17 1965http://lucene.apache.org/solr/t ... -
solr 查询 排序
2009-04-17 11:07 22883http://lucene.apache.org/solr/t ... -
solr 创建,删除,更新索引
2009-04-17 11:02 27331http://lucene.apache.org/solr/t ... -
solr 几个有用的过滤器
2009-04-17 10:31 1726http://lucene.apache.org/solr/t ... -
Solr scalability improvements
2009-04-13 10:28 1349http://yonik.wordpress.com/ Wi ... -
Solr应用开发笔记
2009-03-16 18:00 1899从svn 构建 solr http://lucene.apa ...
相关推荐
在Lucene中,主要涉及以下几个核心概念: 1. **文档(Document)**:在Lucene中,文档是信息的基本单位,可以代表网页、电子邮件或者其他形式的数据。文档由一系列字段(Field)组成,每个字段有名称和内容,比如...
在“Lucene加庖丁解牛测试类”中,我们可以从以下几个方面进行实践: 1. **索引构建**:测试类应包含创建索引的代码,这通常涉及Analyzer的选择(如StandardAnalyzer)、Document的构建以及IndexWriter的使用。...
这些示例通常会涵盖以下几个关键知识点: 1. **安装与配置**:Lucene的下载、构建环境的搭建,包括引入相应的Maven或Gradle依赖,以及设置Java开发环境。 2. **索引创建**:Lucene是如何通过Analyzer分析文本,将...
Lucene 的核心组件包括以下几个部分: 1. **索引(Indexing)**:Lucene 首先将非结构化的文本数据转化为结构化的索引,以便于快速检索。这个过程包括分词(Tokenization)、词干提取(Stemming)、停用词处理...
在Lucene中,常见的中文分词器组件有以下几个: 1. **IK Analyzer**:IK Analyzer是一个开源的、基于Java实现的中文分词工具,支持多种分词模式,包括精确模式、全模式、最短路径模式等。它可以根据实际需求进行...
Lucene的核心组件包括以下几个部分: 1. 文档(Document):代表要索引的数据源,可以是网页、文章、数据库记录等。 2. 字段(Field):文档中的数据被划分为不同的字段,每个字段具有特定的含义和处理方式。 3. ...
Lucene的核心概念包括以下几个方面: 1. **索引**:在Lucene中,索引是将非结构化的文本数据转化为可搜索的形式。它通过分词器(Tokenizer)将文本拆分成单词,然后对这些单词创建倒排索引。倒排索引是一种数据结构...
文章详细阐述了一个改进后的系统模型,该模型主要包括以下几个关键步骤: 1. **天网源数据**:指原始的网页数据来源,是整个检索系统的基础。 2. **数据转换**:通过网页分析器和XML转换器将原始网页数据转换成...
在给定的文件“luceneTest”中,可能包含了示例代码或者配置文件,这通常包括以下几个步骤: 1. 初始化索引目录:创建一个FSDirectory对象,指定用于存储索引的物理路径。 2. 创建索引写入器:使用...
Pangu分析器的核心功能包括以下几个方面: 1. **中文分词**:中文不同于英文,单词之间没有明显的边界。Pangu分析器采用了先进的分词算法,能够准确识别和切割中文词语,如使用字典匹配、基于统计的模型等方法。 2...
在索引中,主要存储的是以下几个关键元素: 1. **文档(Document)**:这是索引的基本单位,可以是一篇文章、一封邮件或其他任何包含文本的数据。在Lucene中,文档由一系列字段(Field)组成,每个字段都有其特定的...
创建索引是 Lucene 的核心步骤,包括以下几个阶段: #### 2.1 初始化索引目录 首先,需要创建一个索引目录,这可以是本地文件系统、网络共享目录,甚至是内存中的索引。 ```java Directory directory = ...
【标题】"java拼车网雏形(Ext2.0+SSH+oracle10g+lucene2.4)" 涉及的核心技术是Java Web开发中的几个关键组件,包括ExtJS 2.0前端框架,Spring、Struts2和Hibernate(SSH)后端框架,Oracle 10g数据库以及Lucene ...
建立索引的过程通常包括以下几个步骤: 1. **创建索引器**:首先需要创建一个 IndexWriter 对象,用于管理索引的写入操作。 2. **文档解析**:将要索引的文档转换为 Document 对象,每个文档包含多个 Field。 3. **...
从提供的文件名"sample.ck.paper.lucene3"来看,我们可以推断出几个关键信息: 1. **sample**:这个词通常用来表示示例或样例,这与标题中的“demo例子”相吻合,表明这是一个用来演示或教学的例子。 2. **ck**:...
2. 描述部分提到的关键词“lucene solr search NLP”指向了文档讨论的几个核心主题: - Lucene:这是由Apache软件基金会支持的一个高性能的、可伸缩的全文检索库,广泛用于搜索引擎和文档检索系统。它以Java编写,...
在Solr中配置Ik分词器,通常需要以下几个步骤: 1. 下载ikanalyzer-solr5版本的分词器库,并将其添加到Solr的lib目录下,确保Solr启动时能够加载到这个库。 2. 在Solr的schema.xml文件中,定义一个字段类型(Field...
使用ES配合“重复数字统计器.e”有以下几个优点: 1. **分布式存储**:ES具有强大的横向扩展能力,能轻松处理PB级别的数据。 2. **实时分析**:ES的实时索引和搜索功能,使得用户可以在数据输入的同时获得统计结果。...
博客实例代码中的"zhy_robot_01"可能包含以下几个关键部分: 1. **用户界面(UI)设计**:包括输入框供用户输入问题,以及显示答案的区域。可以使用Android Studio提供的布局设计工具创建。 2. **事件监听器**:监听...
该文本分析中台的基础架构主要包括以下几个部分: 1. **数据收集层**:通过日志采集工具(如 Flume、Logstash 等)将各类文本数据收集起来,存储至 HDFS。 2. **数据处理层**:利用 Spark 进行数据预处理,包括数据...