- 浏览: 199698 次
文章分类
最新评论
-
code_xiaoke:
session可是有30分钟有效期的还有如果在分布式的环境下 ...
Java Web 用户登陆示例代码 -
xul0038:
http://www.baidu.com
Java Web 用户登陆示例代码 -
16866:
非常棒,配置信息呢
Nginx负载均衡 -
开发小菜:
什么意思,没明白?能不能写一个例子
JS 实现DIV随浏览器窗口大小变化
在lucene使用过程中,如果要对同一IndexWriter中不同 Document,不同Field中使用不同的analyzer,我们该如何实现呢?
通过对《lucene in action》的阅读,发现是可以解决这一问题的。lucene可以正对整个IndexWriter对象或者每一个document对象或者特定 Field使用不同的分析器。
Java代码 复制代码
Analyzer analyzer = new StandardAnalyzer();
IndexWriter writer = new IndexWriter(direcotry, analyzer, true); //
Document doc = new Document();
doc.add(new Field("title", "this is title", Field.Store.COMPRESS,Field.Index.TOKENIZED,Field.TermVector.WITH_POSITIONS_OFFSETS));
doc.add(new Field("content", "this is content", Field.Store.COMPRESS,Field.Index.TOKENIZED,Field.TermVector.WITH_POSITIONS_OFFSETS));
writer.addDocument(doc); //这是大部分情况下使用的一个方法
其实还有另外一个方法,原型如下:
lucene自带文档 写道
addDocument(Document doc, Analyzer analyzer)
Adds a document to this index, using the provided analyzer instead of the value of getAnalyzer().
所以我们还可以写成这样:
Java代码 复制代码
writer.addDocument(doc, analyzer);
// 这里的analyzer是指另外一个你指定的analyzer,不同于上面的StandardAnalyzer
那 么如何针对特定Field使用不同分析器呢,lucene包里面有个PerFieldAnalyzerWrapper类,解决了这一问题,这是 lucene的文档里面的一段话:
lucene自带文档 写道
Example usage:
PerFieldAnalyzerWrapper aWrapper = new PerFieldAnalyzerWrapper(new StandardAnalyzer());
aWrapper.addAnalyzer("firstname", new KeywordAnalyzer());
aWrapper.addAnalyzer("lastname", new KeywordAnalyzer());
In this example, StandardAnalyzer will be used for all fields except "firstname" and "lastname", for which KeywordAnalyzer will be used.
A PerFieldAnalyzerWrapper can be used like any other analyzer, for both indexing and query parsing.
PreFieldAnalyzerWrapper类的构造函数中需要一个默认的分析器作为参数。为了给不同的Field指定不同的 analyzer,就需要调用该类的addAnalyzer()方法。上面的E文相信大家都能看懂的,就不需要我来翻译了,我的英语很差,着急啊,呵呵。
也就是说大家以前初始化分析器的时候用这一句:
Java代码 复制代码
Analyzer analyzer = new StandardAnalyzer();
现在可以改用
Java代码 复制代码
PerFieldAnalyzerWrapper analyzer = new PerFieldAnalyzerWrapper(new StandardAnalyzer());
然 后如果需要特定域的分析器就调用addAnalyzer方法
Java代码 复制代码
analyzer.addAnalyzer("fieldname", new KeywordAnalyzer());
对了,最后说一下,PerFieldAnalyzerWrapper类也是在org.apache.lucene.analysis包下面的,只需要
Java代码 复制代码
import org.apache.lucene.analysis.PerFieldAnalyzerWrapper;
就行了
转:http://hi.baidu.com/lewutian/blog/item/42bf84ceeef3ba35b600c8e7.html
搜索引擎和网络爬虫技术群293961767欢迎志同道合的朋友加入!
通过对《lucene in action》的阅读,发现是可以解决这一问题的。lucene可以正对整个IndexWriter对象或者每一个document对象或者特定 Field使用不同的分析器。
Java代码 复制代码
Analyzer analyzer = new StandardAnalyzer();
IndexWriter writer = new IndexWriter(direcotry, analyzer, true); //
Document doc = new Document();
doc.add(new Field("title", "this is title", Field.Store.COMPRESS,Field.Index.TOKENIZED,Field.TermVector.WITH_POSITIONS_OFFSETS));
doc.add(new Field("content", "this is content", Field.Store.COMPRESS,Field.Index.TOKENIZED,Field.TermVector.WITH_POSITIONS_OFFSETS));
writer.addDocument(doc); //这是大部分情况下使用的一个方法
其实还有另外一个方法,原型如下:
lucene自带文档 写道
addDocument(Document doc, Analyzer analyzer)
Adds a document to this index, using the provided analyzer instead of the value of getAnalyzer().
所以我们还可以写成这样:
Java代码 复制代码
writer.addDocument(doc, analyzer);
// 这里的analyzer是指另外一个你指定的analyzer,不同于上面的StandardAnalyzer
那 么如何针对特定Field使用不同分析器呢,lucene包里面有个PerFieldAnalyzerWrapper类,解决了这一问题,这是 lucene的文档里面的一段话:
lucene自带文档 写道
Example usage:
PerFieldAnalyzerWrapper aWrapper = new PerFieldAnalyzerWrapper(new StandardAnalyzer());
aWrapper.addAnalyzer("firstname", new KeywordAnalyzer());
aWrapper.addAnalyzer("lastname", new KeywordAnalyzer());
In this example, StandardAnalyzer will be used for all fields except "firstname" and "lastname", for which KeywordAnalyzer will be used.
A PerFieldAnalyzerWrapper can be used like any other analyzer, for both indexing and query parsing.
PreFieldAnalyzerWrapper类的构造函数中需要一个默认的分析器作为参数。为了给不同的Field指定不同的 analyzer,就需要调用该类的addAnalyzer()方法。上面的E文相信大家都能看懂的,就不需要我来翻译了,我的英语很差,着急啊,呵呵。
也就是说大家以前初始化分析器的时候用这一句:
Java代码 复制代码
Analyzer analyzer = new StandardAnalyzer();
现在可以改用
Java代码 复制代码
PerFieldAnalyzerWrapper analyzer = new PerFieldAnalyzerWrapper(new StandardAnalyzer());
然 后如果需要特定域的分析器就调用addAnalyzer方法
Java代码 复制代码
analyzer.addAnalyzer("fieldname", new KeywordAnalyzer());
对了,最后说一下,PerFieldAnalyzerWrapper类也是在org.apache.lucene.analysis包下面的,只需要
Java代码 复制代码
import org.apache.lucene.analysis.PerFieldAnalyzerWrapper;
就行了
转:http://hi.baidu.com/lewutian/blog/item/42bf84ceeef3ba35b600c8e7.html
搜索引擎和网络爬虫技术群293961767欢迎志同道合的朋友加入!
发表评论
-
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 1200搜索排序结果的控制 Lu ... -
Compass将lucene、Spring、Hibernate三者结合
2013-02-01 11:02 1677版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声 ... -
Lucene3.0详解
2013-02-01 10:57 1409★第一部分:概述 1. 我 ... -
Java Web 用户登陆示例代码
2013-02-01 09:56 58107实现功能: 1、用户登陆、注销 2、利用session记 ... -
Java对数函数及Java对数运算
2013-02-01 09:47 6797Java对数函数的计算方法非常有问题,然而在API中却有惊人 ... -
域名管理与解析原理 — 《Java邮件开发详解》读书笔记
2013-01-31 14:56 1701一 基本概念 1. 域名:域名是由圆点分开一串单词或缩写组 ... -
优秀的Java工程师需要掌握的10项技能
2013-01-31 14:04 1849编程专业相对于计算机领域其他专业来讲,是一门比较难以修炼的专业 ... -
Web开发入门不得不看
2013-01-28 17:31 1033如今,各种互联网的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里面的作用非 ... -
使用solr搭建你的全文检索
2012-09-28 16:34 1043Solr 是一个可供企业使用的、基于 Lucene 的开箱即用 ...
相关推荐
2. **配置分词器**:在Lucene.NET的索引创建阶段,需要配置Analyzer类,指定使用特定的分词器。例如,使用IK Analyzer可以创建`IKAnalyzer analyzer = new IKAnalyzer();`。 3. **字段分析**:在创建Document对象时...
lucene.net的版本为2.9.2 盘古分词的版本为2.3.1 并实现了高亮功能。高亮上使用的是盘古分词的高亮算法。 有点小bug,在这个字段没有关键字的时候可能会不显示数据, 如果要是只看全文检索,可以自己去掉高亮,看...
分词器的配置是灵活的,可以根据需求选择不同的分词策略,比如标准分词器(StandardAnalyzer)适用于大多数英文文本,而中文分词可能需要使用IKAnalyzer或SmartChineseAnalyzer等针对中文特性的分词器。 在运行这个...
这些分词器能识别中文词汇并将其拆分为单个词元(Token)。 2. **配置分析器**:在LuceneUtils.java或LuceneDB.java中,需要配置合适的中文分词分析器。例如,使用IK Analyzer,代码可能如下: ```java Analyzer ...
2. **配置Lucene**:在Lucene的配置文件中指定自定义的中文分词器。 3. **索引构建**:使用中文分词器构建索引。 4. **查询优化**:对查询语句进行预处理,提高搜索精度。 #### 应用实例 本论文中提到了基于Lucene...
**Lucene分词器资源包详解** Lucene是一款开源的全文搜索引擎库,广泛应用于Java开发中,用于构建高效、可扩展的信息检索应用。这个压缩包提供了Lucene分词时所必需的jar包,使得开发者能够方便地在项目中集成...
jieba的lucene分析器(Analyzer)扩展了Lucene的分析能力,它将jieba的分词结果转换为Lucene可理解的文档字段,这样在建立索引和执行查询时,中文文本可以被正确处理。这在构建基于Lucene的中文搜索引擎或者信息检索...
在Lucene中,你可以通过创建`Analyzer`实例,然后使用`Document`对象来添加字段,如药品名称和功能主治,这些字段会被分词器处理。 在索引建立完成后,可以使用Lucene提供的搜索API来进行查询。这通常涉及到创建`...
IK分词器与Lucene是Java开发中两个重要的文本处理工具,主要应用于信息检索和自然语言处理领域。这里我们将深入探讨这两个组件以及相关的资源和工具。 1. **IK分词器**: IK分词器(Intelligent Chinese Analyzer ...
**正文** Lucene.Net是一个基于Apache Lucene的全文检索库,专门为.NET Framework设计。...通过深入理解Lucene.Net的内部机制和盘古分词的工作原理,可以进一步优化搜索性能,满足不同场景的需求。
盘古分词和Lucene是两个在中文信息处理领域广泛应用的工具,本示例将详细介绍如何在.NET 4.0环境中整合这两个组件,以实现高效的全文搜索功能,并新增了分页功能,为开发者提供了更便捷的开发体验。 首先,盘古分词...
2. **索引构建**:将分词后的结果作为Lucene的文档字段,建立索引。每个文档可以看作是多个关键词的集合,这些关键词及其位置信息被存储在Lucene的索引结构中。 3. **查询处理**:当用户输入查询时,同样使用...
Field是Document的组成部分,用于存储不同类型的字段,如日志时间、内容等。 4. **IndexWriter**:负责创建和更新索引,将Document添加到索引中。 5. **Searcher**:执行搜索操作,根据用户的查询返回匹配的文档。 6...
例如,可以为字段定义一个名为`analysis`的Analyzer,指定`class="org.wltea.analyzer.lucene.IKAnalyzer"`。 4. 如果需要自定义分词规则,可以编辑IK分词器的配置文件,如` IKAnalyzer.cfg.xml`,设置分词模式(如...
在 Elasticsearch 中创建索引,并指定 IK 分词器作为索引字段的分词方式。示例命令如下: ```json PUT /my_index { "settings": { "analysis": { "analyzer": { "ik_analyzer": { "type": "ik", "use_smart":...
在这个过程中,Analyzer是连接分词器和索引构建的关键,它负责接收输入文本,进行分词,然后将结果转化为Lucene.NET可以理解的Token流。 在搜索阶段,用户输入的查询字符串同样会经过盘古分词的处理,生成查询...
标题中的"solr7.3.1中文分词器"指的就是为Solr 7.3.1版本特别优化的中文分词解决方案。 描述中提到的"solr7.3.1种需要的中文IK分词器",IK(Intelligent Chinese Analyzer)分词器是一个强大的、成熟的中文分词组件...
每个文档由多个字段(Field)组成,如标题、内容等,每个字段可以设置不同的属性,比如是否被索引、是否存储等。在添加文档时,需要使用Analyzer进行分词,这是处理中文文本的关键,因为中文不像英文那样自然分隔,...
4. 多字段分词:针对不同字段使用不同的分词策略,满足多样化需求。 总结来说,Solr中文分词器是实现高效中文搜索的关键,选择合适的分词器并进行合理配置,可以显著提升搜索质量和用户体验。开发者需要根据项目...
Solr是中国最流行的开源搜索引擎Lucene的一个扩展,...总之,"solr6.3 ik分词器"是一个强大的中文分词解决方案,通过定制化配置,它可以更好地满足不同领域的中文文本处理需求,提升Solr在处理中文内容时的性能和精度。