各位兄弟姐妹们好,由于IKAnalyzer的词库不能满足于我的分词要求,所以我想自己扩展词库比如说:
已知一string为‘ipad216g’利用IKAnalyzer分词器后,分出的效果是:
ipad216g
ipad
216
g
----------
实际上我想要分的是ipad2 和  16g  这显然没有满足我的要求
于是我查询了文档发现org.wltea.analyzer.dic 类 Dictionary  下有
public static void loadExtendWords(java.util.List<java.lang.String> extWords)
加载扩展的词条
参数:extWords - List词条列表于是我写了如下程序:import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.TermAttribute;
import org.wltea.analyzer.dic.Dictionary;
import org.wltea.analyzer.lucene.IKAnalyzer;
public class Test {
public static void main(String[] args) throws Exception {
String text = "An IndexWriter creates and maintains an index."; 
List<String> strList=new ArrayList<String>();
          strList.add("ipad2");
                Dictionary.loadExtendWords(strList);

        String text2 = "ipad216g";  
        Test.testAnalyzer(new IKAnalyzer(), text2); // 使用IKAnalyzer,词库分词  
}


  /** 
     * 使用指定的分词器对指定的文本进行分词,并打印结果 
     * 
     * @param analyzer 
     * @param text 
     * @throws Exception 
     */  
    public static void testAnalyzer(Analyzer analyzer, String text) throws Exception {  
         
           System.out.println("当前使用的分词器:" + analyzer.getClass());  
           
           TokenStream tokenStream = analyzer.tokenStream("content", new StringReader(text));  
           tokenStream.addAttribute(TermAttribute.class);  

           while (tokenStream.incrementToken()) {  
                  TermAttribute termAttribute = tokenStream.getAttribute(TermAttribute.class);  
                  System.out.println(termAttribute.term());  
           }  
    }  
}
但是检索结果还是没什么变化
依旧是:
----------
ipad216g
ipad
216
g
----------
无奈来请教各位朋友!是不是我理解错了?还是我程序写的有问题?如果有问题,我应该怎么改呢?
请大家帮我解决一下!再次感谢!