公司设计网站需要多久,建设企业网站官网登录,长春企业网站如何建设,网站下载的视频怎么变成本地视频在lucene使用过程中#xff0c;如果要对同一IndexWriter中不同Document#xff0c;不同Field中使用不同的analyzer#xff0c;我们该如何实现呢#xff1f; 通过对《lucene in action》的阅读#xff0c;发现是可以解决这一问题的。lucene可以正对整个IndexWriter对象或者…在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.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().所以我们还可以写成这样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()); 对了最后说一下PerFieldAnalyzerWrapper类也是在org.apache.lucene.analysis包下面的只需要import org.apache.lucene.analysis.PerFieldAnalyzerWrapper; 转载于:https://www.cnblogs.com/lindayyh/archive/2009/10/23/1588883.html