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에 따라 라이센스가 부여됩니다.