- 浏览: 199687 次
文章分类
最新评论
-
code_xiaoke:
session可是有30分钟有效期的还有如果在分布式的环境下 ...
Java Web 用户登陆示例代码 -
xul0038:
http://www.baidu.com
Java Web 用户登陆示例代码 -
16866:
非常棒,配置信息呢
Nginx负载均衡 -
开发小菜:
什么意思,没明白?能不能写一个例子
JS 实现DIV随浏览器窗口大小变化
/**
* 多索引进行查询
*/
public void testCreateIndex() {
Analyzer analyzer = new IKAnalyzer();
String atext ="明年起,杭州将对两区五县(市)居民发放市民卡,实现杭州市域范围医保“一卡通”凭卡就医。12月底,首批发卡工作将拉开帷幕";
String btext ="搜索操作为每个Searchable分配一个线程市民卡,直到所有线程都完成其搜索。基本搜索和进行过滤的搜索是并行执行的";
Directory a = new RAMDirectory();
Directory b = new RAMDirectory();
IndexWriter awriter;
IndexWriter bwriter;
IndexSearcher[] searchers;
try {
awriter = new IndexWriter(a, analyzer, true ,IndexWriter.MaxFieldLength.LIMITED);
Document adoc = new Document();
adoc.add(new Field("aid", "1", Field.Store.YES,Field.Index.ANALYZED));
adoc.add(new Field("doc", atext, Field.Store.YES,Field.Index.ANALYZED));
adoc.add(new Field("name", "张三", Field.Store.YES,Field.Index.NOT_ANALYZED));
awriter.addDocument(adoc);
awriter.close();
bwriter = new IndexWriter(b, analyzer, true ,IndexWriter.MaxFieldLength.LIMITED);
Document bdoc = new Document();
bdoc.add(new Field("bid", "1", Field.Store.YES,Field.Index.ANALYZED));
bdoc.add(new Field("doc", btext, Field.Store.YES,Field.Index.ANALYZED));
bdoc.add(new Field("name", "李四", Field.Store.YES,Field.Index.NOT_ANALYZED));
bwriter.addDocument(bdoc);
bwriter.close();
searchers = new IndexSearcher[2];
searchers[0]=new IndexSearcher(a);
searchers[1]=new IndexSearcher(b);
MultiSearcher searcher=new MultiSearcher(searchers);
//对2个索引进行搜索
String[] fields =new String[]{"aid","doc","name"};
Query query=IKQueryParser.parseMultiField(fields, "张三");
// Query query=IKQueryParser.parse("doc", "市民卡");
TopDocs topDocs = searcher.search(query, 200);
ScoreDoc[] hits = topDocs.scoreDocs;
for (int i = 0; i < hits.length; i++) {
Document doc = searcher.doc(hits[i].doc);
System.out.println("name:"+doc.get("name"));
System.out.println("aid:"+doc.get("aid")+"bid:"+doc.get("bid"));
System.out.println("doc:"+doc.get("doc"));
}
assertNotNull(topDocs);
} catch (CorruptIndexException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (LockObtainFailedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// List<User> userList = userService.getUserList();
// userIndexService.createIndex(userList);
}
* 多索引进行查询
*/
public void testCreateIndex() {
Analyzer analyzer = new IKAnalyzer();
String atext ="明年起,杭州将对两区五县(市)居民发放市民卡,实现杭州市域范围医保“一卡通”凭卡就医。12月底,首批发卡工作将拉开帷幕";
String btext ="搜索操作为每个Searchable分配一个线程市民卡,直到所有线程都完成其搜索。基本搜索和进行过滤的搜索是并行执行的";
Directory a = new RAMDirectory();
Directory b = new RAMDirectory();
IndexWriter awriter;
IndexWriter bwriter;
IndexSearcher[] searchers;
try {
awriter = new IndexWriter(a, analyzer, true ,IndexWriter.MaxFieldLength.LIMITED);
Document adoc = new Document();
adoc.add(new Field("aid", "1", Field.Store.YES,Field.Index.ANALYZED));
adoc.add(new Field("doc", atext, Field.Store.YES,Field.Index.ANALYZED));
adoc.add(new Field("name", "张三", Field.Store.YES,Field.Index.NOT_ANALYZED));
awriter.addDocument(adoc);
awriter.close();
bwriter = new IndexWriter(b, analyzer, true ,IndexWriter.MaxFieldLength.LIMITED);
Document bdoc = new Document();
bdoc.add(new Field("bid", "1", Field.Store.YES,Field.Index.ANALYZED));
bdoc.add(new Field("doc", btext, Field.Store.YES,Field.Index.ANALYZED));
bdoc.add(new Field("name", "李四", Field.Store.YES,Field.Index.NOT_ANALYZED));
bwriter.addDocument(bdoc);
bwriter.close();
searchers = new IndexSearcher[2];
searchers[0]=new IndexSearcher(a);
searchers[1]=new IndexSearcher(b);
MultiSearcher searcher=new MultiSearcher(searchers);
//对2个索引进行搜索
String[] fields =new String[]{"aid","doc","name"};
Query query=IKQueryParser.parseMultiField(fields, "张三");
// Query query=IKQueryParser.parse("doc", "市民卡");
TopDocs topDocs = searcher.search(query, 200);
ScoreDoc[] hits = topDocs.scoreDocs;
for (int i = 0; i < hits.length; i++) {
Document doc = searcher.doc(hits[i].doc);
System.out.println("name:"+doc.get("name"));
System.out.println("aid:"+doc.get("aid")+"bid:"+doc.get("bid"));
System.out.println("doc:"+doc.get("doc"));
}
assertNotNull(topDocs);
} catch (CorruptIndexException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (LockObtainFailedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// List<User> userList = userService.getUserList();
// userIndexService.createIndex(userList);
}
发表评论
-
java实现动态切换上网IP (ADSL拨号上网) java开发
2013-04-24 10:06 1289动态切换IP的实现主是也由Windows的rasdial命令提 ... -
JAVA字符串处理函数
2013-04-12 09:21 1122Java中的字符串也是一连串的字符。但是与许多其他的计算机语 ... -
(转)Lucene打分规则与Similarity模块详解
2013-02-06 14:08 1198搜索排序结果的控制 Lu ... -
Compass将lucene、Spring、Hibernate三者结合
2013-02-01 11:02 1677版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声 ... -
Lucene3.0详解
2013-02-01 10:57 1407★第一部分:概述 1. 我 ... -
Java Web 用户登陆示例代码
2013-02-01 09:56 58107实现功能: 1、用户登陆、注销 2、利用session记 ... -
Java对数函数及Java对数运算
2013-02-01 09:47 6797Java对数函数的计算方法非常有问题,然而在API中却有惊人 ... -
Lucene为不同字段指定不同分词器(转)
2013-01-31 17:34 3455在lucene使用过程中,如 ... -
域名管理与解析原理 — 《Java邮件开发详解》读书笔记
2013-01-31 14:56 1701一 基本概念 1. 域名:域名是由圆点分开一串单词或缩写组 ... -
优秀的Java工程师需要掌握的10项技能
2013-01-31 14:04 1848编程专业相对于计算机领域其他专业来讲,是一门比较难以修炼的专业 ... -
Web开发入门不得不看
2013-01-28 17:31 1032如今,各种互联网的Web ... -
MVC框架的映射和解耦
2013-01-25 21:37 831最近在写一个业务上用到的框架,回想起接触过的一些MVC框架, ... -
JAVA发送EMAIL的例子
2013-07-09 09:44 902import javax.mail.*; ... -
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎
2012-11-19 09:55 1384前两天看到了一个中国新闻网,这个网站的搜索form的actio ... -
Lucene多字段搜索
2012-11-19 09:53 1030最近在学习Lucene的过程中遇到了需要多域搜索并排序的问题, ... -
lucene之sort
2012-11-16 15:06 1089package cn.zqh.lucene.sort; im ... -
Nginx负载均衡
2012-11-16 11:45 7655最近迷上了Nginx,真实麻雀虽小,五脏俱全..功能实在强大. ... -
Lucene相关度排序的调整
2012-11-16 11:38 1729Lucene的搜索结果默认按 ... -
HashSet重复元素判断
2012-10-15 16:37 9139HashSet不能添加重复的元素,当调用add(Object) ... -
JAVA提高教程(2)-认识Set集合之HashSet
2012-10-09 09:44 972集合在Java里面的作用非 ...
相关推荐
5. **CreateSearcher**: 私有方法,创建一个`MultiSearcher`,用于在多个索引文件中进行搜索。 ```java private MultiSearcher createSearcher(String[] targets) { // ... 实现创建多索引搜索器的代码 } ``` 在...
- **多字段搜索**:允许同时在多个字段上进行搜索,提高查询效率。 - **命中高亮**:Highlighter 类可以对搜索结果中的关键词进行高亮显示。 5. **优化与维护** - **合并索引段**:通过调用 IndexWriter 的 ...
它包括IndexSearcher,用于在索引上进行搜索,以及MultiSearcher,用于同时在多个索引上搜索。 4. 写入器(IndexWriter):写入器负责创建和更新索引。在5.2.1版本中,它支持高效的批量添加和删除操作,以及动态...
5. Searcher:搜索器是执行查询的核心,它可以是IndexSearcher(针对单个索引)或MultiSearcher(针对多个索引)。 三、Lucene的查询处理 Lucene支持多种查询语法,如布尔查询、短语查询、范围查询等。查询过程...
4. **Searcher**:执行查询和返回结果的接口,包括IndexSearcher和MultiSearcher,后者可以同时在多个索引上执行搜索。 5. **Query**:表示用户输入的查询条件,如TermQuery(单个词)、BooleanQuery(布尔组合)和...
`Searcher`类可能有`IndexSearcher`和`MultiSearcher`,分别用于单个索引和多个索引的搜索,它们都实现了`search()`方法来执行查询。 此外,UML图还会展示类的方法和属性,比如`IndexWriter`的`addDocument()`、`...
搜索器可以是IndexSearcher,用于在线搜索,或者MultiSearcher,用于同时在多个索引上执行搜索。 - **查询解析器(QueryParser)**:将用户的查询字符串转换为内部表示形式,支持多种查询语法,如布尔表达式、短语...
8. **多字段搜索**:Lucene支持在多个字段上进行联合搜索,这在`MultiFieldQueryParser`中体现。 9. **文档处理**:`Document`类和`Field`类是处理文档数据的基本单元,源码中可以看到它们如何封装和存储信息。 10...
4. **Document 和 Field**:在 Lucene 中,每个要索引的对象称为 Document,可以包含多个属性,每个属性称为 Field。例如,一篇文章可以是一个 Document,其标题、内容和作者分别作为不同的 Fields。 5. **...
它可以是IndexSearcher,用于在线搜索,也可以是MultiSearcher,用于同时在多个索引上执行查询。 二、Lucene 3.0.3的改进与特性 1. **性能提升**:3.0.3版本在搜索速度和内存使用上进行了优化,尤其在处理大量文档...
- **Multi-field Search**: 在多个字段中同时搜索,提高搜索覆盖率。 - **Memory Indexing**: 支持内存中的索引,适用于小型数据集或实时搜索场景。 ### 5. 应用场景 Lucene.NET 广泛应用于内容管理系统、电子商务...
包括IndexSearcher,用于在线搜索,以及MultiSearcher,用于同时搜索多个索引。 4. 其他关键组件 - 倒排索引(Inverted Index):Lucene的核心数据结构,用于高效地进行文本查找。每个词项指向包含它的文档列表。 ...
5. 多线程支持:允许多个线程同时读写索引,提高性能。 通过对《Lucene 3.0 原理与代码分析完整版》的学习,开发者不仅可以理解Lucene的工作原理,还能掌握如何定制化Lucene以满足特定需求,从而在实际项目中充分...
6. **搜索过程**:查询执行涉及查询分析、索引搜索和结果评分。使用TF-IDF算法计算相关性,对结果进行排序。 三、API详解 Lucene 2.0.0的主要API包括以下几个关键类: 1. **IndexWriter**:用于创建和更新索引,...
4.11. MultiSearcher类--多个索引搜索 13 4.12. ParalellMultiSearcher类---多线程搜索 14 5. 排序 14 5.1. Sort类 14 5.2. SortField类 14 5.3. 指定排序的法则 15 5.3.1. 按照文档的得分降序排序 15 5.3.2. 按文档...