Lucene 입문 노트 4 - 검색 결과를 정렬합니다.
검색 결과 정렬
1. 어떤 경우에 우리는 검색 결과의 정렬 방식을 사용자 정의해야 한다. 예를 들어 전자상거래 사이트에서 요구할 수 있고 검색된 상품에 대해'판매량','가격','호평수'등에 따라 정렬해야 한다.
2. Sort 클래스를 사용하여 정렬 방법 사용자 정의
Sort sort = new Sort();
Sort 객체가 인스턴스화되면 여러 정렬 필드를 설정할 수 있습니다.
Sort.setSort(SortField field...) ,예:
SortField field = new SortField("id", SortField.LONG)//id를 오름차순(기본값)으로 정렬함을 나타냅니다.
//내림차순으로 정렬:
SortField field = new SortField("id", SortField.LONG, true).//true는 정렬 결과를 표시합니다. 기본값은 오름차순입니다. 반전하면 내림차순입니다.
3. 테스트 코드:
/* 《Lucene- CRUD API 》 save */
public class SortTest {
@Test
public void test() throws Exception {
//
String queryString = " ";
// =================================================================
// a, Query
QueryParser queryParser = new QueryParser(Version.LUCENE_30, "content", Configuration.getAnalyzer());
Query query = queryParser.parse(queryString);
// b, ,
IndexSearcher indexSearcher = new IndexSearcher(Configuration.getDirectory());
// --------------------------------------------
// , ORDER BY
// TopDocs topDocs = indexSearcher.search(query, 100); // 100
// TopDocs topDocs = indexSearcher.search(query, filter, n);
// TopDocs topDocs = indexSearcher.search(query, filter, n, sort); // filter null
// Sort sort = new Sort(new SortField("id", SortField.LONG)); // id
Sort sort = new Sort(new SortField("id", SortField.LONG, true)); // id , , SortField
//sort.setSort(fields...) //
TopDocs topDocs = indexSearcher.search(query, null, 100, sort);
// --------------------------------------------
ScoreDoc[] scoreDocs = topDocs.scoreDocs; // n
// c,
List list = new ArrayList();
for (int i = 0; i < scoreDocs.length; i++) {
ScoreDoc scoreDoc = scoreDocs[i]; // 1,
Document doc = indexSearcher.doc(scoreDoc.doc); // 2, Document
list.add(ArticleDocumentUtils.document2Article(doc));// 3, Document Article
}
// =================================================================
//
for (Article article : list) {
System.out.println("-------> id = " + article.getId());
System.out.println("title = " + article.getTitle());
System.out.println("content = " + article.getContent());
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.