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