关于lucene数据检索

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

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

利用普通作法:

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

(1)

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

检索结果无法检索到该条索引数据。原因与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);

 

你可能感兴趣的:(关于lucene数据检索)