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:
本文深入探讨了Elasticsearch中排序机制与查询技术,包括如何使用Fieldcache进行排序,Sort方法实现不同字段的排序,以及如何利用MultiPhraseQuery进行多条件查询。同时,文章还介绍了如何设置查询范围、过滤条件以及实现远程查询和多索引搜索等功能。通过实践案例,读者能够掌握Elasticsearch中排序与查询的高效应用。
1010

被折叠的 条评论
为什么被折叠?



