知识大全 lucene中对不同的域使用不同的分析器

Posted 分析器

篇首语:从来好事天生俭,自古瓜儿苦后甜。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 lucene中对不同的域使用不同的分析器相关的知识,希望对你有一定的参考价值。

  在lucene使用过程中 如果要对同一IndexWriter中不同Document 不同Field中使用不同的analyzer 我们该如何实现呢?

  通过对《lucene in action》的阅读 发现是可以解决这一问题的 lucene可以正对整个IndexWriter对象或者每一个document对象或者特定Field使用不同的分析器

  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 PRESS Field Index TOKENIZED Field TermVector WITH_POSITIONS_OFFSETS));

  doc add(new Field( content this is content Field Store PRESS 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()

  所以我们还可以写成这样

  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文相信大家都能看懂的 就不需要我来翻译了 我的英语很差 着急啊 呵呵

  也就是说大家以前初始化分析器的时候用这一句:

  Analyzer analyzer = new StandardAnalyzer();

  现在可以改用

  PerFieldAnalyzerWrapper analyzer = new PerFieldAnalyzerWrapper(new StandardAnalyzer());

  然后如果需要特定域的分析器就调用addAnalyzer方法

  analyzer addAnalyzer( fieldname new KeywordAnalyzer());

cha138/Article/program/Java/hx/201311/25894

相关参考

知识大全 Java中对HashMap的深度分析

Java中对HashMap的深度分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在Java的

不同软件上的SAR指标的研判

不同软件上的SAR指标的研判由于目前在国内钱龙和分析家这两种典型的股市分析软件中,SAR指标有两种不同的分析界面,因此,SAR指标在这两种分析软件上有一些不同的分析方法。[一]分析家软件上的SAR指标

知识大全 一个天大的发现——同一只股票在不同的股票分析软件中的市盈率不同!为什么会这样啊

一个天大的发现——同一只股票在不同的股票分析软件中的市盈率不同!为什么会这样啊?请高手赐教!谢谢1/你提出的问题很好2/是的,不同的软件显示的市盈率有可能不一样,具体原因是:首先不同的软件是有不同的开

知识大全 Lucene 挖掘相关搜索词

Lucene挖掘相关搜索词  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  搜索引擎中往往有一个可

玉米多穗的原因分析

随着现代化农业技术的进步.玉米新品种层出不穷.玉米单产不断提高,但在玉米大田生产当中,多穗现象却频频发生.不同年份、不同地区、不同品种发生程度不一:同一品种不同地区、不同耕作制度、不同的土壤条件发生程

玉米多穗的原因分析

随着现代化农业技术的进步.玉米新品种层出不穷.玉米单产不断提高,但在玉米大田生产当中,多穗现象却频频发生.不同年份、不同地区、不同品种发生程度不一:同一品种不同地区、不同耕作制度、不同的土壤条件发生程

知识大全 Lucene.net的全新体验

Lucene.net的全新体验  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 Lucene在多个索引上进行搜索

Lucene在多个索引上进行搜索  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  代码如下  vi

在经济分析中,按不同的市场结构的特征,市场可以划分为__

在经济分析中,按不同的市场结构的特征,市场可以划分为_____。A、完全竞争市场B、垄断竞争市场C、寡头市场D、垄断市场答案:ABCD解析:在经济分析中,按不同的市场结构的特征,市场可以划分为完全竞争

环境工程水处理中对曝气设备的应用分析

在经济高速发展的今天,人们对于我们的环境的重视程度越来越高,环境工程成了人们的关注点。环境工程的水处理是环境工程的重要内容之一,现今,环境工程的水处理中曝气设备的应用成为了人们所探讨的问题。文章从多个