lucene in action笔记之二搜索基础
一、简单的搜索程序
二、Lucene评分机制
三、Query对象
public void testTerm() throws Exception { IndexSearcher searcher = new IndexSearcher(directory); Term t = new Term("subject", "ant"); //"subject"是域名,"ant"是查询项的值 Query query = new TermQuery(t); Hits hits = searcher.search(query); assertEquals("JDwA", 1, hits.length()); t = new Term("subject", "junit"); hits = searcher.search(new TermQuery(t)); assertEquals(2, hits.length()); searcher.close(); }???????? 1)注意:查询项的值是区分大小写的。此外,由于不同的分词器的索引方式都不同,所以对原文的搜索可能还有其它问题。?? 2)TempQuery类在根据关键字(即通过Field.Keyword()索引过的关键字)查询文档时显得特别有用。??? 3)如果单个单词作为查询表达式,QueryParse的parse()函数将返回一个TermQuery对象。这个单词就相当于一个单独的项。RangeQueryRangeQuery query = new RangeQuery(begin, end, true);//begin、end均为项Term//true 指明搜索边界包含在搜索范围之内,反之为false IndexSearcher searcher = new IndexSearcher(directory);?QueryParser可用[起始 To 终止]或{起始 To 终止}表达式来构造。前者边界包含在搜索范围,后者反之。PrefixQueryBooleanQueryPhraseQueryWildcardQueryFuzzyQuery
四、解析查询表达式 QueryParser