2012-01-16 5 views
6

색인 작성시 (조회 할 때가 아닌) 특정 용어가 더 중요하다는 것을 판별 할 수 있습니까?
문서 1 :색인 작성시 Lucene 용어 추가하기

예를 들어 동의어 필터를 고려
문서 2 "이것은 좋은 차입니다"

"이 멋진 차량입니다"내가 처음 문서에 용어 차량을 추가 할 두 번째 의사에게 자동차라는 용어는 이지만 차후에 색인이 자동차라는 단어로 쿼리되면 첫 번째 문서는 두 번째 문서보다 높은 점수가 매겨지고 차량에 대한 질의를받는 경우 다른 방법이 사용되기를 바랍니다.

해당 문서에 필드를 추가하기 전에 필드에 setBoost를 호출하면 트릭이 수행됩니까?

아니면 다른 필드 이름에 동의어를 추가해야합니까?

아니면 잘못된 관점에서보고 있습니까? 는 출원에 부스트 설정

감사

답변

4

그래서이 귀하의 경우에는 작동하지 않을 것입니다 해당 필드의 모든 측면에 영향을 미칩니다.

하지만 Lucene 페이로드 (모든 용어에 대해 설정할 수있는 바이트 배열)를 사용해야합니다. 그것들을 사용하여 term specific boost를 설정합니다 (예를 들어, doc 1의 경우 vehicle을 0.5로 설정). 그런 다음 자신의 Similarity을 구현하고 scorePayload() 메서드를 재정 의하여 해당 부스트를 디코딩 한 다음 PayloadTermQuery을 사용하면 해당 단어의 페이로드에있는 부츠를 기반으로 점수에 기여할 수 있습니다.

+0

감사합니다. 여기서 언급 한 클래스 및 메서드를 기반으로 예제를 살펴 보겠습니다. – epeleg

+0

이러한 페이로드 부스트를 특정 필드의 용어 (예 : "태그")로만 제한 할 수 있습니까? – RalfB