2012-03-22 5 views
8

필자의 경우 문서에는 두 개의 필드가 있습니다 (예 : "title"및 "views"). '조회수'는 사람들이이 문서를 방문한 횟수입니다. like : "title": "iphone", "views": "10". 관련성 점수가 점수 (제목) * 0.8 + 점수 (조회수) * 0.2로 계산되는 것과 같이보기에 일부 가중치를 할당하는 전략을 개발해야합니다. 루신이 할 수 있니? 그리고이 질문과 관련된 알고리즘이 있는지 알고 싶습니다.Lucene : 특정 필드를 높이는 방법

답변

10

당신이 할 수있는 방법입니다 :

Query titleQuery, viewsQuery; 

titleQuery.setBoost(0.8); 
viewsQuery.setBoost(0.2); 
BooleanQuery query = new BooleanQuery(); 
query.add(titleQuery, Occur.MUST); // or Occur.SHOULD if this clause is optional 
query.add(viewsQuery, Occur.SHOULD); // or Occur.MUST if this clause is required 

// use query to search documents 

점수는 (곱셈 상수) 0.8*score(titleQuery) + 0.2*score(viewsQuery)에 비례한다.

views 필드를 활용하려면 ValueSourceQuery을 사용해야 할 수도 있습니다.

+0

내가 이해한다면 correctyl setBoost는 더 이상 사용되지 않으며 최근에는 https://lucene.apache.org/core/5_5_0/core/org/apache/lucene/search/BoostQuery.html 사용됩니다. – Dannyboy

5

세 가지 방법으로 부스트 할 수 있습니다. 반면 색인 - - 문서를 색인에 추가되기 전에() document.setBoost를 호출하여 사용자의 요구에 따라이 조합을 강화

문서 수준을 적용 할 수 있습니다.

문서에 필드를 추가하기 전에 (그리고 색인에 문서를 추가하기 전에) field.setBoost()를 호출하여 문서의 필드 레벨 증폭 - 색인 생성 중 - 색인 생성 중.

쿼리 수준 향상 - 검색 중에 쿼리 절에 대한 부스트를 설정하여 Query.setBoost()를 호출합니다.

소스 : http://lucene.apache.org/core/old_versioned_docs/versions/3_0_0/scoring.html 여기

+0

document.setBoost()는 오래 전 사용되지 않습니다. – Dannyboy

관련 문제