这里使用的Lucene4.7.0和Lucene3.X稍有不同
有下面三段内容,我想对船一系列的搜索进行加分
bike car jeep truck bus boat
train car ship boat van subway
car plane taxi boat vessel railway
- 定义自定义的MyAnalyzer,实现对字段的有效载荷进行赋值
1 package com.pera.lucene.score.payload; 2 3 import java.io.Reader; 4 5 import org.apache.lucene.analysis.Analyzer; 6 import org.apache.lucene.analysis.Tokenizer; 7 import org.apache.lucene.analysis.core.WhitespaceTokenizer; 8 import org.apache.lucene.analysis.payloads.PayloadEncoder; 9 import org.apache.lucene.util.Version; 10 11 public class MyAnalyzer extends Analyzer 12 { 13 14 private PayloadEncoder encoder; 15 16 MyAnalyzer(PayloadEncoder encoder) 17 { 18 this.encoder = encoder; 19 } 20 21 @Override 22 protected TokenStreamComponents createComponents(String fieldName, Reader reader) 23 { 24 // 用来解析空格分隔的各个类别 25 Tokenizer source = new WhitespaceTokenizer(Version.LUCENE_47, reader); 26 // 自定义的Filter,用来获取字段的Payload值 27 MyTokenFilter filter = new MyTokenFilter(source, encoder); 28 29 return new TokenStreamComponents(source, filter); 30 } 31 32 }