关于lucene数据检索

需求:须要索引的数据为一些简单数据:好比“通讯管理”等短语。要求用户提供一段文本内容大概七十多字,要求能够从提供的文本的内容里检索出“通讯管理”这条索引数据。apache

检索工具: hibernate search 3.1 ;lucene 2.4.0; 分词器:庖丁分词工具

利用普通做法:hibernate

org.apache.lucene.queryParser.QueryParser parser = new QueryParser(propertyName, new PaodingAnalyzer());  
org.apache.lucene.search.Query queryLucene = parser.parse(content);索引

(1)it

(2)TopDocs hits = indexSearch.search(queryLucene ,10);
ScoreDoc[] scoreDoc = hits.scoreDocs;    
String ct = "找到的个数:" + hits.totalHits + "  \n";lucene

检索结果没法检索到该条索引数据。缘由与ParserQuery对中文的支持不完美致使。方法

现暂利用以下方法解决,可是对于精确性控制还不太好。通信

在(1)中加入以下代码:数据

Set<Term> termSet = new HashSet<Term>();
    queryLucene.extractTerms(termSet);
    System.out.println("------分词后内容----:" + queryLucene.toString());
    BooleanQuery booleanQuery = new BooleanQuery();
    for(Term term:termSet){
     TermQuery tq=new TermQuery(term);
     BooleanClause clause=new BooleanClause(tq, BooleanClause.Occur.SHOULD);
     booleanQuery.add(clause);
    }
   (2)处改成:
    TopDocs hits = indexSearch.search(booleanQuery,10);di

相关文章
相关标签/搜索