`
BuN_Ny
  • 浏览: 85215 次
  • 来自: 济南
社区版块
存档分类
最新评论

14) 第二章 索引:用Lucene索引数字

阅读更多

    索引数字的场景主要有两种:一是把它们当作字符串一样处理,比如“要是搁以前,术士能暴击10000多,有木有!”中的"10000",它和其它的词没什么区别,你可以把它仅仅想成一个字符串;另一种场景则是某个域只索引数字,且可以搜索数字的范围等,比如设计了某个Field存储邮件的大小,现在要搜索大小在3M-10M的邮件。

 

    对于第一种情况,你要做的仅仅是选一个不会对数字进行分词的分析器。这种分析器很多,比如之前我们用过的WhitespaceAnalyzer和StandardAnalyzer。当然WhitespaceAnalyzer分析器可能仅仅对英语之类的语言还有点用处。对于第二种情况,你不需要为这些专门设计用来存储数字的域进行分词,指定成Field.Index.NOT_ANALYZED就可以了。不过你必须清楚的是,Lucene内部处理的仍然只是String类型!即"10"是排在"2"前面的!若是想支持范围搜索,你需要为数字增加前置0, 即需要索引"02",这样"02"便排在"10"前面了!


public class IndexNumberTest extends TestCase{
	
	private Directory directory;
	
	protected void setUp() throws Exception {
		directory = new RAMDirectory();
		IndexWriter writer = getWriter(); 

		Document doc = new Document();
        doc.add(new Field("indexNumber",
        		"要是搁以前,术士能暴击10000多,有木有!",
                Field.Store.YES,
                Field.Index.ANALYZED));
        writer.addDocument(doc);
        writer.close();
	}

	public void testNumber() throws IOException, ParseException {
		IndexSearcher is = new IndexSearcher(directory);
		QueryParser parser = new QueryParser(Version.LUCENE_30, 
				"indexNumber", 
				new StandardAnalyzer(Version.LUCENE_30));
		Query query = parser.parse("10000");

		TopDocs topDocs = is.search(query, 1);
        assertEquals(1, topDocs.totalHits);
	}

	private IndexWriter getWriter() throws IOException {
		return new IndexWriter(directory, new StandardAnalyzer(Version.LUCENE_30),
				IndexWriter.MaxFieldLength.UNLIMITED);
	}

}
 
1
2
分享到:
评论
1 楼 jmeily 2011-06-13  
GOOD

相关推荐

    基于lucene的索引与搜索

    第二章 搜索引擎的结构 2.1 系统概述 搜索引擎主要由三部分组成:网络爬虫(也称为网络机器人)、索引器和查询处理器。首先,网络爬虫负责从互联网上抓取网页;然后,索引器对抓取的网页进行处理,创建索引;最后...

    Lucene In Action中文版第二章

    《Lucene In Action中文版第二章》主要涵盖了Lucene搜索引擎库的基础知识和核心概念,这是一款广泛应用于全文检索、信息检索领域的开源Java库。Lucene的强大之处在于其高效性和灵活性,它能帮助开发者迅速构建出具备...

    Lucene实战第二版

    第二章“Lucene应用”则会进一步深入实践,可能涵盖: 1. **全文检索**:演示如何实现高效的全文检索功能,包括关键词高亮和模糊匹配。 2. **多字段搜索**:讲解如何同时在多个字段上进行搜索,并进行复合条件的...

    lucene索引结构与时空优化

    第一章 Lucene是个倒排索引 第二章 Lucene与数据库 第三章 Lucene的索引建立及文件结构 第四章 Lucene的检索机制及文档得分 第五章 Lucene的存储优化 第六章 Lucene的效率优化 第七章 用Lucene加快web开发!

    Lucene In Action-book

    #### 第二部分:应用Lucene - **章节内容**: - **Parsing common document formats (解析常见文档格式)**:介绍了解析PDF、Word等常见文档格式的方法,使这些文档可被搜索。 - **Tools and extensions (工具和...

    lucene in aciton (英文版)

    2. **第二部分:应用Lucene** - **第7章:解析常见文档格式** - 讨论了如何使用Lucene处理常见的文档格式,如PDF、Word等。 - 包括了工具和技术的介绍。 - **第8章:工具和扩展** - 介绍了可用于增强Lucene功能...

    Lucene In Action second edition

    ### Lucene in Action 第二版:深入探索 Java 搜索技术 #### 一、引言 《Lucene in Action》第二版是一本专为希望利用 Apache Lucene 进行高效搜索功能开发的技术人员编写的权威指南。本书由 Michael McCandless、...

    Lucene 3.6 学习笔记

    ### 第二章 索引建立 #### 2.1 创建 Directory 和 Writer - `Directory`用于指定索引的存储位置,如磁盘或内存。 - `IndexWriter`创建时需传入`Directory`,用于写入索引。 #### 2.2 创建文档 - `Document`对象...

    Lucene_in_Action_中文版前5章

    2. **第二章:构建第一个应用** - **环境搭建**:介绍如何配置Java环境,以及如何获取和导入Lucene的库。 - **创建索引**:讲解了如何使用Lucene API对文本数据进行分析、分词和建立索引。 - **基本搜索**:展示...

    Lucene in Action.pdf

    第二部分为“应用Lucene”,侧重于实际应用场景中的实践技巧。 ##### 第一部分:核心Lucene 1. **Meet Lucene(认识Lucene)** - **章节概述**:本章主要介绍Lucene的基本概念、特点及其在搜索引擎领域的地位。...

    搜索引擎Lucene+Heritrix(第二版)

    《搜索引擎Lucene+Heritrix(第二版)》是一本深度探讨搜索引擎技术的书籍,主要聚焦于开源项目Lucene和Heritrix...而压缩包中的"ch2"可能包含了书中第二章的内容,涉及更具体的细节和技术实现,对于深入学习至关重要。

    搜索引擎Lucene+Heritrix(第二版)2

    《搜索引擎Lucene+Heritrix(第二版)2》是一本深入探讨搜索引擎技术的专业书籍,主要围绕两个核心组件——Lucene和Heritrix展开。Lucene是Apache软件基金会的一个开源全文检索库,而Heritrix则是一个强大的网络爬虫...

    Lucene In Action

    - 第一章介绍了如何构建一个简单的索引和搜索应用程序。通过这个例子,读者可以立即上手实践,并根据自己的需求进行修改和扩展。 - **应用场景与自定义需求适应性**:此示例程序可以作为基础模板,适用于多种不同...

    Lucene2.0+Heritrix(源代码)

    在"ch2"这个文件中,可能包含了关于第二章的源代码或者教程内容,这部分通常会详细解释如何设置和运行这两个项目。可能包括如何配置Heritrix的爬虫策略,如何定制Lucene的索引和搜索功能,以及如何将两者整合。读者...

    解密搜索引擎技术实战:Lucene&Java精华版

    在**第1章**“搜索引擎总体结构”中,作者从搜索引擎的基本模块出发,如网络爬虫、全文索引结构与Lucene实现、搜索用户界面、计算框架、文本挖掘等方面进行阐述。 - **1.1 搜索引擎基本模块**:这部分简明扼要地...

Global site tag (gtag.js) - Google Analytics