这里使用的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 }
View Code

相关文章:

  • 2022-03-07
  • 2021-08-25
  • 2022-01-09
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-30
  • 2021-09-28
猜你喜欢
  • 2021-10-16
  • 2021-12-28
  • 2021-06-03
  • 2022-12-23
  • 2022-02-12
  • 2022-02-14
  • 2021-10-26
相关资源
相似解决方案