- 浏览: 388688 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (215)
- ubuntu (27)
- 虚拟机 (13)
- 数据库 (29)
- JAVA (40)
- 搜索 (23)
- 开发工具 (2)
- 产品 (2)
- 工具 (1)
- 应用服务器 (5)
- linux (17)
- log (1)
- 多线程 (3)
- 异常 (1)
- shell (6)
- 12306 ;互联网 (1)
- 持续集成&Hudson (4)
- js (1)
- JAVA OR-Map (1)
- 漏洞 (1)
- svn (1)
- MAVEN (3)
- 架构 (1)
- windows (1)
- json (1)
- web (3)
- jenkins (2)
- iptables (2)
- JAVA ssh (0)
- 项目管理 (1)
- tomcat (1)
- 安全 (1)
- 数据库 mysql (1)
- 性能 (1)
最新评论
-
sbwfgihc:
怎么用的啊,
<转>mysql 树查询语句 -
panghaoyu:
实现一个智能提示功能需要ajax、数据库、jsp/php、算法 ...
<转>Solr Suggest实现搜索智能提示 -
songsove:
请问您qq多少
solr 对拼音搜索和拼音首字母搜索的支持 -
panghaoyu:
实现一个智能提示功能需要ajax、数据库、jsp/php、算法 ...
<转>Solr Suggest实现搜索智能提示 -
norain1988:
这样就可以实现相关搜索了吗
solr 百度相关搜索类似功能的实现
lvpei.cnblogs.com.自己总结的Lucene熟悉而暧昧的几个问题。
1、索引及搜索的概念
将原始数据处理成一个高效的交差引用的查找结构以便于快速的搜索。索引结构是指快速随机访问存于其内部的关键词的数据结构。
搜索是在一个索引中查找单词来找出它们所出现的文档的过程。支持单个和多个词汇的查询,短语查询,通配符,结果分级和排序。
2、lucene的核心类
核心索引类
IndexWriter唯一能写索引的类 索引的写入和索引的整体的维护 合并,优化
Analyzer:分析文本内容,提取关键字
Document:一个Document代表字段的集合
Field:每个Document含有一个或多个字段,具体化为Field类。是否存储,是否索引,是否分词
核心搜索类
IndexSearcher以只读方式打开索引,提供几个搜索方法,最简单的接受单个Query对象做为参数并返回一个Hits 对象。
Term是搜索的基本单元。与Field对象类似,它由一对字符串元素组成:字段的名称和字段的值。
Query q = new TermQuery(new Term(“contents”, “lucene”));
Hits hits = is.search(q);
Query的几个子类实现就是lucene的几种搜索方式:TermQuery、BooleanQuery,模糊查询PhraseQuery,前缀查询PrefixQuery, PhrasePrefixQuery, 范围搜索RangeQuery
通配符搜索WildcardQuery
Hits类是一个搜索结果(匹配给定查询的文档)文档队列指针的简单容器。并不从索引中加载所有匹配文档。
3、提高索引效率。
可以合并索引来减少目录索引文件的数量,以提高处理索引的效率。
IndexWriter的optimize()对索引目录和缓存目录下所有的segment优化,Lucene只需要打开一个索引文件加载,效率会大大提高。
优化也会带来一些损失:耗费更多的内存和磁盘空间
MERGE_FACTOR用于子索引(Segment)合并,相当于ORAl数据库中对大批量的数据插入操作优化,值越大,索引效率越快。
RAMDirectory把一个普通的index完全读取到内存中,比真正的文件系统快很多.
尽可能对字段进行索引来提高查询速度.
4、lucene2.1到2.4的变动
IndexWriter 的构造器 参数多了一个字段长度,(目录,分析器,重建索引)
IndexWriter.flush()更改为commit();
Hits 命中类 3.0中会被删除。
5、分词方法
字符串匹配的分词方法(正向最大 反向匹配 最小切分 双向匹配)
词义分析(不成熟 LingPipe自然语言处理的Java开源工具包 主题概念分类)、统计分词(分词词典)。
6、lucene索引访问原则
同一时刻,lucene索引中允许有一个进程对其进行加入文档,删除文档,更新索引等操作。
同一时刻,lucene索引允许多个线程同时对其进行检索。
7、Lucene锁机制
使用commit.lock与write.lock实现锁机制。所谓的锁其实是存放于系统临时目录内的一个文件。
建立索引 write.lock / 合并索引 commit.lock segment合并和读取
8、lucene索引文件格式
segment:一个索引中,会包含有多个segment。每个segment都有一个统一的前缀,前缀是当前索引的document数量
segments:一个完整的索引中,有且只有一个“segments”文件,记录了当前索引中所有segment的信息。
.cfs格式:复合索引格式,IndexWriter的属性:useCompoundFile,索引的内容可能非常大,文件数量可能非常的多
.tii和.tis格式:存储分词后的词条,tii是所有文件,标明了每个.tis文件中词条的位置
fnm格式:fnm格式的文件包含了Document中的所有Field名称。
.fdx和.fdt格式:域值存储表,.fdt存储具有Store.YES属性的Field数据
deletable格式:文档被删除后并不是立刻从索引中去除
nrm:标准化因子文件,索引阶段设置Document Boost和Field Boost,对文档评分权重
9、影响Lucene对文档评分权重的四种方式
在索引阶段设置Document Boost和Field Boost,存储在(.nrm)文件中。
在搜索语句中,设置Query Boost.
继承并实现自己的Similarity,实现其中的接口可以干预打分的过程
继承并实现自己的collector 。将docid和score插入一个PriorityQueue中,使得得分最高的文档先返回。
10、lucene增量索引的关键
1、数据库必须对数据是否已经索引做好标识
2、IndexWriter中有一个参数boolean类型的,用来确定是重建索引(true)还是增量索引。
原链:http://www.cnblogs.com/lvpei/archive/2010/06/17/1759652.html
发表评论
-
百度GOOGLE的用户鼠标行为分析<转>
2012-08-29 09:37 1525转自:http://www.20ju.com/conte ... -
lucene 一些性能调优建议
2012-08-22 16:12 5574lucene 排序 Lucene默认按照相关度 ... -
<转>庖丁解牛分词之自定义词库[自定义词典]
2012-07-03 10:21 930原链接: http://hi.baidu.com/stone_ ... -
庖丁(Paoding)分词的词典原理解析
2012-07-03 10:14 3671Paoding分词过程中词典 ... -
solr 百度相关搜索类似功能的实现
2012-06-27 16:26 5788这个功能的实现有几种不同的思路。 大概半个月前,我在网 ... -
solr 索引库同步数据库
2012-06-27 14:01 5664对于拼音和拼音首字母的支持,当你在搜商品的时候,如果想输 ... -
solr 对拼音搜索和拼音首字母搜索的支持
2012-06-27 13:52 9107对于拼音和拼音首字母的支持,当你在搜商品的时候,如果想输 ... -
<转>Solr Suggest实现搜索智能提示
2012-06-27 10:15 13962智能提示简介 搜索的智能提示目前是各大搜索的标配应用, ... -
IK的整个分词处理过程
2012-06-26 14:25 11590IK的整个分词处理过 ... -
Solr的检索运算符
2012-06-21 14:47 4247“:” 指定字段查指定值,如返回所有值*:*² “?” 表示 ... -
Solr 学习(5) —- Solr查询语法和参数
2012-06-21 14:25 11622、查询语法 solr的一些查询语法 ... -
Apache Solr schema.xml及solrconfig.xml文件中文注解
2012-06-21 10:55 1207一、字段配置(schema)schema.xml位于so ... -
<转>LUCENE3.0 自学吧 4 TermDocs
2012-06-07 22:13 1248利用TermDocs也是可以得到一些有用的结果。。。代码 ... -
<转>浅谈文档索引普遍原理<笔记>
2012-06-07 21:49 1024--lvpei.cnblogs.com 搜索引擎普遍采 ... -
Lucene中Field类很重要
2012-06-07 21:46 8263org.apache.lucene.demo.Index ... -
Lucene架构简单分析
2012-06-06 15:30 1663Lucene简介Lucene 是一个基 ... -
<转>lucene3.0中Field.Index, Field.Store,Field.TermVector详解
2012-06-06 14:49 923lucene在doc.add(new Field(&quo ... -
<转>用于Lucene的各中文分词比较
2012-06-05 09:58 5612对几种中文分析器,从分词准确性和效率两方面进行比较。分析器依次 ... -
Lucene3参考资料
2012-06-05 09:46 1025http://wenku.baidu.com/view/706 ... -
lucene索引word/pdf/html/txt文件及检索(搜索引擎)
2012-06-04 14:59 987因为lucene索引的时候是 ...
相关推荐
Lucene是一个高性能、全功能的文本搜索引擎库,由Java编写而成,被广泛应用于各种基于文本的数据检索场景中。无论是用于网站内容搜索还是文档管理系统的全文搜索功能,Lucene都能提供强大的支持。 #### 二、Lucene...
Java搜索引擎的研究与实现(含文档+源码)<br>目录 1<br>摘要 3<br>第一章 引言 4<br>第二章 搜索引擎的结构 5<br>2.1系统概述 5<br>2.2搜索引擎的构成 5<br>2.2.1网络机器人 5<br>2.2.2索引与搜索 5<br>2.2.3 Web...
<groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>8.10.1</version> <!-- 请根据实际版本号更新 --> </dependency> <dependency> <groupId>org.apache.lucene</groupId> ...
<br>系统设计<br> 1 jive设计思路 <br> 2 jive的工作内幕 <br> 3 Jive源代码研究 <br> 4 Jive中的设计模式 <br> 5 jive学习笔记 <br><br><br> <br>设计模式<br> 1 大道至简-Java之23种模式一点就通 <br> 2 设计模式...
接下来,我们需要创建一个数据模型类,这个类将被JPA映射到MySQL数据库中的表。例如,我们有一个`Article`实体类,包含标题、内容等字段: ```java @Entity public class Article { @Id @GeneratedValue(strategy...
<groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>3.5.0</version> </dependency> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-analyzers-...
<br>1. 正向全切分算法,42万汉字字符/每秒的处理能力(IBM ThinkPad 酷睿I 1.6G 1G内存 WinXP)<br>2. 对数量词、地名、路名的优化处理<br>3. 对未知词汇采用自识别结合二元切分算法,确保搜索召回率<br>(使用方法...
Maven < dependency> < groupId>com.hankcs.nlp</ groupId> < artifactId>hanlp-lucene-plugin</ artifactId> < version>1.1.7</ version> </ dependency>Solr快速上手将和共两个jar放入${webapp}/WEB-INF/li
<groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>8.10.1</version> <!-- 请根据最新版本号更新 --> </dependency> <dependency> <groupId>org.apache.lucene</groupId> ...
<groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>2.4.1</version> </dependency> </dependencies> ``` 在Java代码中,你可以如下所示创建和使用MMAnalyzer: ```java ...
<groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>8.10.1</version> </dependency> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-analyzers-...
Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。<br>Lucene的作者:Lucene的贡献者Doug Cutting是一位资深全文索引/...
Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发,被广泛应用于各种搜索引擎的构建。它提供了一个简单的API,使得开发者可以方便地在自己的应用程序中集成全文检索功能。本文将通过一个简单的代码例子,...
Lucene Query Tool (lqt) 是一个命令行工具用来执行 Lucene 查询并对结果进行格式化输出。 使用方法: $ ./lqt usage: LuceneQueryTool [options] --analyzer <arg> for query, (KeywordAnalyzer | ...
<groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>8.10.1</version> <!-- 使用最新版本 --> </dependency> <dependency> <groupId>org.apache.lucene</groupId> ...
<groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>8.10.1</version> </dependency> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-analyzers-...
<groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>8.5.1</version> </dependency> <!-- 其他相关模块如-analyzers-common, -queryparser等根据需求添加 --> ``` 三、Lucene...
将它添加到您的 Maven 项目的pom.xml : < dependency> < groupId>com.snowtide</ groupId> < artifactId>lucene-pdf</ artifactId> < version>3.0.0</ version></ dependency> 或者,将上述 Maven 工件坐标添加到...
<title>使用 Lucene.net 建立简单的数据库搜索程序</title> <!-- ... --> </HEAD> <body MS_POSITIONING="GridLayout"> <form id="Form1" method="post" runat="server"> <table width="100%" border="0"> ...