`
javaso
  • 浏览: 53228 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JE上大牛lucene经验总结

阅读更多

 对lucene感兴趣,但没有实际有实践环境,只能根据别人的经验来总些一些现成的东西。下面是JE坛子里面大牛lucene经验。。。。

1一百万数据记录,一台服务器,分布式,前段服务器通过socket向后端lucene分布式集群发送索引数据,另后端有搜索服务器,提供lucene搜索服务。索引与搜索服务器定时同步。可提供横向扩展,多应用扩展。没有遇到问题,测试结果未定

2.第一个项目 目前是80W左右 一台服务器 Linux 8G内存 4核cpu 1T硬盘,转速中上等
版本2.4遇到的问题,在项目中直跟随服务器启动建立索引,比直接写程序建立索引生成的文件要大2-3倍暂时没解决
3.目前是400多W左右 查询速度1秒到3秒。一台普通电脑 Linux 2G内存 4核cpu 500G硬盘,转速7200
版本3.0
目前遇到的问题是建立过长的文本,会抛出数组越标,只要截取到3072字符,那就可以顺利通过索引。

4.我以前用solr,受限于服务器硬件和其他地方也要用到数据,所以将索引和数据分开的。

这里说的索引之只做index,不做store,唯一保存的是docid。(分布式还要保存score,为了合并结果时排序)

用户请求到索引这里找到相关docid(这里是排完序的docid)和相关结果总数,然后再到数据保存地方拿数据。

数据保存可以在数据库或者其他key-value的地方。

通常一个请求会返回一页数据,比如10个document,

所以为降低拿数据时引起的io问题,可以将用户请求的关键词为键,docid序列化后为值保存到memcached。(如果io还是问题突出,那么cache 高频率的document或者前几页的document)

整个过程的时间是用户请求到索引中拿到相关docid后。

如果是分布式,,那么按照最多提供页面×每个页面显示的结果数,将请求并发到不同索引处拿到docid数组,将它合并,然后排序(如果你用php,那么看下php数组函数,有去重和排序的函数直接使用)。不清楚要自己code的找下(去重,排序)

假如只做索引,无需考虑压缩。假如将数据存到数据库,那么docid其实是每条记录主键,拿数据是很快的(Sphinx通常是作索引,数据保存到mysql或者pgsql)

索引划分一般可以根据业务需要和使用频繁度来。比如用户在a版块只会查询a版块下内容,b版块只会查询b版块下内容,那么就按照a,b版块将索引划分。
使用频繁度,通常是新旧两个搜索引,新的索引一般存放当天。因为索引东西多了后,commit, optimize的时间会变得很长。不做optimize,搜索就慢。新索引只存放一天的,当然比较小,optimize的时间短。

做索引和做搜索分离:索引和搜索都很耗资源,如果能放在不同机器完成(solr的解决方案是分离),如果不能分离,那么在使用频率很低的时候做索引(一般是午夜)。

搜索结果排序,一般来说是用lucene自带的score,也有根据自己业务特点定制score的计算(我当时是自定义score)。质量好坏在于你对业务的理解和相关数据计算的正确性。
 效率:  数据量7600w,,多台服务器(实在不好意思说那叫服务器,你可以理解成是P4的pc,跑起来比PIII的品牌服务器还慢,当时很受google用普通pc的影响),,把爬虫干掉后并发不高(能扛下来我觉得挺幸运了),忘记多少了。

查询速度我记得还行好像是通常的500ms-2秒,,最慢的好像3-4秒(出现频率很低)

主要做的search优化,索引提速,重写了solr的同步shell(当时不支持freebsd,我也不会shell,拿本书花了一下午写得)。

之前是业务数据研究了下,写了score计算。当时看还行。


比较头疼的是做索引,我写shell自动完成,多个索引不同机器做,做完还要切换到search。经常要看看内存有没有out,,只有一台2g内存,其他都是1g内存,,

同步是个问题,哪怕只变化一点点,整个文件变了。

忘记索引多少G,数据存储多少G了,,依稀记得很大

5百万多数据,一台服务器 Linux 8G内存 4核cpu 硬盘转速中上等,每日pv4万
使用ehcache做缓存,使用单例模式,分了四个索引,目前运行还可以



5个G你是放在一个索引目下面?单个索引目录最好不要超过2G

把索引根据id 散列到10个索引目录下

用ParallelMultiSearcher进行搜索。

如果已经这样还是有问题,估计就是你程序写的有问题了

我现在用到时单机多RMI server,每个server都承载20G的索引。

响应时间都在1s以内,大部分100ms内就返回结果了。

服务器的配置比你好,8G + 4cpu*双核,一台服务器启动了四个JVM,一个tomcat+3个RMI Server

单个RMI Server分配的服务器资源我想跟你的应该也差不多

分享到:
评论

相关推荐

    je-analysis-1.5.3、lucene-core-2.4.1分词组件

    在分词组件的选择上,"je-analysis-1.5.3"因其简洁的设计和良好的性能而受到青睐。然而,需要注意的是,版本号较旧的"lucene-core-2.4.1"可能不支持现代的一些特性和优化,如最新的查询语法、多字段搜索等。为了获得...

    lucene使用总结笔记

    lucene使用总结笔记lucene使用总结笔记lucene使用总结笔记lucene使用总结笔记lucene使用总结笔记

    lucene je-analysis jar包

    《深入理解Lucene与JE-Analysis:构建高效文本分析系统》 在信息技术领域,文本处理是数据挖掘和信息检索中的重要一环。Lucene和JE-Analysis是两个强大的开源工具,用于实现高效的全文检索和文本分析。本文将深入...

    lucene个人总结

    根据提供的文件信息,以下是对Lucene 3.5版本的核心知识点进行的详细解析与总结: ### Lucene 3.5 概述 Lucene 3.5 是一款高性能的全文检索引擎工具包,广泛应用于搜索引擎、文档管理和内容管理等领域。Lucene 的...

    je-analysis-1.5.3;lucene-core-2.9.2

    总结来说,"je-analysis-1.5.3"和"lucene-core-2.9.2"这两个jar包分别提供了文本分析和全文检索的功能,它们的结合使用可以构建强大的文本处理和搜索解决方案。理解并熟练运用这些工具,对于提升Java应用程序的数据...

    Lucene原理及使用总结

    Lucene的架构包括多个组件,如`Analyzer`负责文本分析,`Document`表示待索引的文档,`Field`定义文档的字段,`IndexWriter`负责创建和更新索引,`Directory`管理磁盘上的索引文件,`QueryParser`解析用户输入的查询...

    lucene 中文分词 庖丁解牛

    本文将深入探讨如何在Lucene中高效地进行中文分词,借助“庖丁解牛”的概念,以求在理解与应用上达到游刃有余的境地。 一、Lucene简介 Lucene是Java语言编写的一个高性能、可扩展的信息检索库,它提供了完整的搜索...

    lucene学习总结

    **Lucene学习总结** 在深入理解Lucene之前,我们首先需要了解什么是全文检索。全文检索是一种从大量文本数据中快速查找所需信息的技术。它通过建立索引来实现高效的搜索,而Lucene正是Java环境下最著名的全文搜索...

    Lucene 3.0 原理与代码分析PDF

    Lucene学习总结之一:全文检索的基本原理 Lucene学习总结之二:Lucene的总体架构 Lucene学习总结之三:Lucene的索引文件格式(1) Lucene学习总结之三:Lucene的索引文件格式(2) Lucene学习总结之三:Lucene的...

    lucene和je-analysis-1.5.3

    《深入理解Lucene与JE-Analysis-1.5.3:构建高效全文检索系统》 在信息化社会,数据量的快速增长使得高效的全文检索技术变得至关重要。Lucene和JE-Analysis-1.5.3就是这样的两个关键组件,它们在Java环境中为开发者...

    Java搜索工具——Lucene实例总结(一)

    Java搜索工具——Lucene实例总结(一) 在Java开发中,搜索引擎已经成为不可或缺的一部分,而Apache Lucene正是一个强大的全文搜索引擎库。这篇博文将带你深入理解Lucene的基本概念和使用方式,帮助你快速入门并掌握...

    MMAnalyzer 分词jar包(lucene-core-2.4.1.jar je-analysis-1.5.3.jar)

    这个分词器在Lucene的基础上,针对中文特性进行了优化,提高了分词效率和准确性,尤其适合对易读性和速度有较高要求的项目。 "lucene-core-2.4.1.jar"是Lucene的核心库,包含了Lucene的基本功能,如索引构建、查询...

    lucene,lucene教程,lucene讲解

    lucene,lucene教程,lucene讲解。 为了对文档进行索引,Lucene 提供了五个基础的类 public class IndexWriter org.apache.lucene.index.IndexWriter public abstract class Directory org.apache.lucene.store....

    转 Lucene中文分词组件 JE-Analysis 1.5.1 天狼

    它在分词效率和准确性上都进行了优化,以适应大规模中文文档的检索需求。这个组件的核心在于其分词算法,它结合了多种策略,如基于字典的匹配、统计学习等,以达到较高的分词效果。 在分词过程中,字典起着至关重要...

    lucene3.0 lucene3.0

    lucene3.0 lucene3.0 lucene3.0 lucene3.0 lucene3.0

    Lucene 庖丁解牛分词法2.4版本jar包

    《深入剖析Lucene:庖丁解牛分词法2.4版本》 在中文信息处理领域,Lucene作为一个强大的全文检索引擎库,扮演着至关重要的角色。然而,由于中文的复杂性,简单的英文分词策略无法满足需求,于是有了针对中文的分词...

    Lucene中文分词组件 JE-Analysis 1.5.1

    全面支持Lucene 2.0 增强了词典维护的API 增加了商品编码的匹配 增加了Mail地址的匹配 实现了词尾消歧算法第二层的过滤 整理优化了词库 1.4.0 —— 2006-08-21 增加词典的动态扩展能力 1.3.3 ...

    lucene基础总结

    ### Lucene基础知识总结 #### 一、Lucene简介与核心概念 **Lucene**是一款高性能、全文搜索引擎库,由Java语言编写。它提供了一套完整的文本索引与搜索功能,被广泛应用于各种需要进行高效文本搜索的应用场景之中...

    lucene学习总结文档

    lucene是一个全文搜索框架,它提供接口,由用户自由实现。 本资源为对lucene的学习+收集

Global site tag (gtag.js) - Google Analytics