论坛首页 Java企业应用论坛

第一次搞庖丁死活查不出原因

浏览 3204 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2012-05-15  
如果用StandardAnalyzer分词运行没问题..换成paoding就会出现异常 java.lang.IndexOutOfBoundsException: Not a valid hit number: 0 应该是查找不成功

public class Chinese {
	private static String FIELD_NAME = "content";
	private static String QUERY = "共和国";

	public static void main(String[] args) throws Exception {
		String IDNEX_PATH = "/paoding_test_index";
		//获取Paoding中文分词器
//		Analyzer analyzer = new StandardAnalyzer();
		Analyzer analyzer = new PaodingAnalyzer();
		//建立索引
		IndexWriter writer = new IndexWriter(IDNEX_PATH, analyzer, true);
		Document doc = new Document();
		Field field = new Field("content", "你好,世界!", Field.Store.YES,
		    Field.Index.TOKENIZED, Field.TermVector.WITH_POSITIONS_OFFSETS);
		doc.add(field);
		writer.addDocument(doc);
		writer.optimize();
		writer.close();
		System.out.println("Indexed success!");
		 
		//检索
		IndexReader reader = IndexReader.open(IDNEX_PATH);
		QueryParser parser = new QueryParser("content", analyzer);
		Query query = parser.parse("世界");
		Searcher searcher = new IndexSearcher(reader);
		Hits hits = searcher.search(query);
		if (hits.length() == 0) {
		    System.out.println("hits.length=0");
		}
		Document doc2 = hits.doc(0);
		//高亮处理
		String text = doc2.get("content");
		TermPositionVector tpv = (TermPositionVector) reader.getTermFreqVector(
		                0, "content");
		TokenStream ts = TokenSources.getTokenStream(tpv);
		Formatter formatter = new Formatter() {
		    public String highlightTerm(String srcText, TokenGroup g) {
		        if (g.getTotalScore() <= 0) {
		            return srcText;
		        }
		        return "<b>" + srcText + "</b>";
		    }
		};
		Highlighter highlighter = new Highlighter(formatter, new QueryScorer(
		        query));
		String result = highlighter.getBestFragments(ts, text, 5, "…");
		System.out.println("result:\n\t" + result);
		reader.close();

	}
}
   发表时间:2012-05-16  
你是应该是少一个dic的文件
  • 大小: 37.9 KB
0 请登录后投票
   发表时间:2012-05-17  
wxwall 写道
你是应该是少一个dic的文件


你是说paoding-dic-names.properties?这个是有的..莫非要把里面的注释去了?
0 请登录后投票
   发表时间:2012-05-23  
把词典加入src 编译
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics