Field cache:在一个IndexReader生命周期内,用于排序。
Sort:Sort.RELEVANCE,Sort.INDEXORDER,按照Field排序new Sort("category"),升序new Sort("pubmonth", true),
IndexSearcher searcher = new IndexSearcher(directory); TopDocs results = searcher.search(query, null, 20, sort);
多个Field排序:
new Sort(new SortField[]{ new SortField("category"), SortField.FIELD_SCORE, new SortField("pubmonth", SortField.INT, true) })
MultiPhraseQuery:类似于PhraseQuery,可以设置多个短语的查询。
MultiPhraseQuery query = new MultiPhraseQuery(); query.add(new Term[] { // #1 new Term("field", "quick"), // #1 new Term("field", "fast") // #1 }); query.add(new Term("field", "fox")); TopDocs hits = searcher.search(query, 10); query.setSlop(1); hits = searcher.search(query, 10);
SpanTermQuery:没神马特殊。
SpanFirstQuery:从开头开始的n个term包含查询项。
SpanFirstQuery sfq = new SpanFirstQuery(brown, 2);
SpanQuery,不能用QueryParser。
过滤查询:
String jan1 = TestUtil.parseDate("2004-01-01"); String jan31 = TestUtil.parseDate("2004-01-31"); String dec31 = TestUtil.parseDate("2004-12-31"); RangeFilter filter = new RangeFilter("modified", jan1, dec31, true, true);
Filter filter = new FieldCacheTermsFilter("pubmonth",new String[] {"199910","200406"});
TermQuery categoryQuery = new TermQuery(new Term("category", "/philosophy/eastern")); Filter categoryFilter = new QueryWrapperFilter(categoryQuery);
Filter prefixFilter = new PrefixFilter(new Term("pubmonth", "19"));
MultiSearcher:
MultiSearcher searcher = new MultiSearcher(searchers); // range spans documents across both indexes RangeQuery query = new RangeQuery("animal", "h", "t", true, true);// #3 query.setConstantScoreRewrite(true); TopDocs hits = searcher.search(query, 10);
ParallelMultiSearcher:
远程查询:
LocateRegistry.createRegistry(1099); Searchable[] searchables = new Searchable[ALPHABET.length()]; Searcher multiSearcher = new MultiSearcher(searchables); RemoteSearchable multiImpl = new RemoteSearchable(multiSearcher); Naming.rebind("//localhost/LIA_Multi", multiImpl); Searcher parallelSearcher = new ParallelMultiSearcher(searchables); RemoteSearchable parallelImpl = new RemoteSearchable(parallelSearcher); Naming.rebind("//localhost/LIA_Parallel", parallelImpl);
TermFreqVector:
FieldSelector: