![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
lucene3.5
文章平均质量分 68
chongqingnantian
这个作者很懒,什么都没留下…
展开
-
一、初步认识lucene
环境搭建: 1、lucene-core-3.5.0.jar 2、mmseg4j-all-1.8.5-with-dic.jar(中文分词器) 3、lucene-highlighter-3.5.0.jar、lucene-memory-3.5.0.jar(高亮显示) 在全文索引工具中,都是由这样的三部分组成 1、索引部分(I am a boy) 2、...原创 2012-11-19 14:42:52 · 77 阅读 · 0 评论 -
十六、搜索排序
public void searcherBySort(String queryStr,Sort sort) { try { IndexSearcher searcher = getSearcher(); QueryParser parser = new QueryParser(Version.LUCENE_35,"c...原创 2012-12-19 12:14:39 · 71 阅读 · 0 评论 -
十八、自定义评分
public class MyCustomScoreProvider extends CustomScoreProvider { public MyCustomScoreProvider(IndexReader reader) { super(reader); } /** ...原创 2012-12-19 16:18:54 · 88 阅读 · 0 评论 -
十九、自定义QueryParser
原因: 1、对于某些QueryParser(FuzzyQuery,WildcardQuery)在查询时会使得性能降低,所以考虑将这些查询取消 2、在具体的查询时,很有可能有这样一种需求:需要获取的是一个数字的范围查询。所以必须扩展原有的QueryParser才能进行查询 实现思路:覆盖QueryParser类,并且重载相应方法 public class CustomPa...原创 2012-12-19 16:28:15 · 70 阅读 · 0 评论 -
十七、搜索过滤
public void searcherByFilter(String queryStr,Filter filter) { try { IndexSearcher searcher = getSearcher(); QueryParser parser = new QueryParser(Version.LUCENE_35,"c...原创 2012-12-20 09:23:42 · 51 阅读 · 0 评论 -
二十、自定义过滤器
有的应用有些要求,对于某类型的内容即使满足条件了,但是也不能被搜索出来,lucene中提供了过滤器的功能, 通过自定义的过滤器继承Filter,从 而实现特定的过滤功能。Filter是一种过滤行为BitSet是一种位集合队列, 这个队列中只有两种取值,TRUE或FALSE,LUCENE以这两种取值代表文档是否被过 滤,也就是说,LUCENE返回结果时, ...原创 2012-12-20 09:23:53 · 65 阅读 · 0 评论 -
二十一、Luke
luke是一个查询索引的工具,使用时必须注意:版本要与lucene的版本完全一致,否则可能打不开索引信息 java -jar luke-xx-xx.jar可以打开索引 选择索引所存储的目录,就可以使用luke查询和操作相应的索引信息,并且可以在search中根据QueryParser来查询相应的信息 ...原创 2012-12-20 09:24:28 · 75 阅读 · 0 评论 -
二十二、Tika
Tika是2008年才产生的一个apache的项目,主要用于打开各种不同的文档,1.0 public class IndexUtil { public void index() { try { File f = new File("d:/lucene/example2/MyBatis 3 User Guide ...原创 2012-12-20 09:24:41 · 88 阅读 · 0 评论 -
二十三、高亮显示
public void lighter01() { try { String txt = "我爱北京,上彩旗飞,伟大领袖,指引我们向前进,向前进!!!想起身离开东京法律思考的机会 那个上的讲话那伟大的个圣诞sadfsadnfl.sajdfl;aksjdf;lsadfsadfm.asd那是肯定...原创 2012-12-20 09:24:51 · 76 阅读 · 0 评论 -
二十四、通过NRTManager和SearchManager实现近实时搜索
是否进行实时搜索 实时搜索(近实时搜索) 完全的实时搜索:只要数据库一变动,马上要更新索引,writer.commit来操作 近实时搜索:当用户修改了信息之后,先把索引保存到内存中,然后在一个统一的时间对内存中的所有的索引进行提交操作。reopen,NRTManager(near-real-time) ...原创 2012-12-21 11:35:13 · 107 阅读 · 0 评论 -
二十五、solr与tomcat的整合
1、solr是全文搜索服务器,专门用户管理索引的。 2、下载solr-->Lucene3.5.0(solr3.5.0)。 3、将solr中的example中的solr拷贝到要作为服务器的位置 放入: 其中data文件夹中的东西可以全部删除。 4、将相应的solr的web程序也拷贝出来 解压后放入: 5、修改solr-->hom...原创 2012-12-25 13:52:52 · 59 阅读 · 0 评论 -
二十六、solr的基本使用
public class Message { private String id; private String title; private String[] content; public Message() { super(); } public Me...原创 2012-12-26 10:26:16 · 67 阅读 · 0 评论 -
十五、实现简单同义词分词器
public interface SamewordContext { public String[] getSamewords(String name); } public class MySameTokenFilter extends TokenFilter { private CharTermAttribute ct...原创 2012-12-19 11:41:06 · 187 阅读 · 0 评论 -
十四、中文分词器
中文分词器 : Paoding:庖丁解牛分词器。已经没有更新了 mmseg:使用搜狗的词库() 1、导入包(有两个包:1、带dic,2、不带dic) 如果使用不带dic的,得自己指定词库位置 2、创建的时候使用MMSegAnalyzer分词器 Analyzer a = new MMSegAnalyzer(new File("D:\\tools\\javaT...原创 2012-11-28 13:49:45 · 56 阅读 · 0 评论 -
十三、自定义Stop分词器
import java.io.Reader; import java.util.Set; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.LetterTokenizer; import org.apache.lucene.analysis.LowerCaseFilte...原创 2012-11-28 13:42:03 · 115 阅读 · 0 评论 -
二、lucene索引_创建_域选项
Field.Store.YES或者NO(存储域选项) YES:将会存储域值,原始字符串的值会保存在索引中,以此可以进行相应的恢复操作,对于主键,标题可以是这种方式存储 NO:不会存储域值,通常与Index.ANAYLIZED合起来使用,索引一些如文章正文等不需要恢复的文档 , 此时内容无法完全还原(doc.get) Field.Index(索引选项...原创 2012-11-19 16:42:47 · 65 阅读 · 0 评论 -
三、索引建立步骤
索引建立步骤 1、创建Directory Directory directory = FSDirectory.open(new File("D:/test/index01")); 2、创建Writer IndexWriter writer = new IndexWriter(directory, new IndexWriterConfig(...原创 2012-11-19 17:26:51 · 206 阅读 · 0 评论 -
四、加权操作和对日期和数字进行索引
//存储数字 doc.add(new NumericField ("attach", Field.Store.YES, true).setIntValue (attachs[i])); //存储日期 doc.add(new ...原创 2012-11-20 16:13:31 · 88 阅读 · 0 评论 -
五、IndexReader和IndexWriter的生命周期
对于IndexReader而言,反复使用 IndexReader .open打开会有很大的开销,所以一般在整个程序的生命周期中只会打开一个IndexReader,通过这个IndexReader来创建不同的IndexSearcher,如果使用单例模式,可能出现的问题有: 1、当使用Writer修改了索引之后不会更新信息,所以需要使用IndexReader.openIfChange方法操作 ...原创 2012-11-20 17:17:12 · 152 阅读 · 0 评论 -
六、常用的Directory
FSDDirectory.open会根据当前的运行环境打开一个最合理的基于File的Directory new RAMDirectory会从内存中打开directory,好处是速度快,缺点是无法持久化原创 2012-11-20 17:19:22 · 76 阅读 · 0 评论 -
七、搜索的简单实现(TermQuery)
TermQuery只能精确匹配字符串(包括分词后的字符串,不分词的就需要全部匹配),不能用于数字的匹配。 1、创建IndexReader ,创建IndexSearcher public IndexSearcher getSearcher(Directory directory) { try { if(read...原创 2012-11-26 17:12:29 · 98 阅读 · 0 评论 -
八、其他搜索Query
TermRangeQuery : 字母范围搜索,不支持数字范围,比较规则:先从第一个字母开始比较,如果第一个字符在查询范围内且不等于开始范围的第一个字母,例如查询范围"jz"--"za",被查询的是lisi,那么就直接匹配了,如果被查询的是jack,由于一个字母相等了,就比较第二个字母,依次类推。 public void searchByTermRange(...原创 2012-11-27 10:30:16 · 85 阅读 · 0 评论 -
九、Queryparser
Mike 默认域包含mike Mike john Mike OR john 默认域包含mike或者john +mike +address:zhaotong Mike AND address:zhaotong 默认域即使mike并且address是zhaotong id :2 Id域...原创 2012-11-27 17:24:05 · 119 阅读 · 0 评论 -
十、分页搜索
分页查询有两种实现方式: 1、再查询 public void searchPage(String query, int pageIndex, int pageSize) { try { Directory dir = FileIndexUtils.getDirectory(); IndexS...原创 2012-11-27 17:30:21 · 78 阅读 · 0 评论 -
十一、分词器的核心类
Analyzer : SimpleAnalyzer、StopAnalyzer、WhitespaceAnalyzer、StandardAnalyzer public static void displayToken(String str,Analyzer a) { try { TokenStream strea...原创 2012-11-28 13:12:46 · 75 阅读 · 0 评论 -
十二、Attribute
Attribute : TokenStream stream = a.tokenStream("content",new StringReader(str)); //位置增量的属性,存储语汇单元之间的距离 PositionIncrementAttribute pia = st...原创 2012-11-28 13:20:05 · 81 阅读 · 0 评论 -
二十七、Luence在项目中运用
public class LuceneContext { private static LuceneContext instance; private static final String INDEX_PATH = "d:/lucene/test"; private static IndexWriter writer; priv...原创 2012-12-26 15:03:47 · 85 阅读 · 0 评论