需求:須要索引的數據爲一些簡單數據:好比「通訊管理」等短語。要求用戶提供一段文本內容大概七十多字,要求能夠從提供的文本的內容裏檢索出「通訊管理」這條索引數據。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