關於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

相關文章
相關標籤/搜索