2014-10-01 2 views
1

작성한 텍스트 문서를 기반으로 색인을 작성했습니다.Solr의 다중 값 텍스트 필드에서 전체 일치 계산

<fieldtype name="TField" class="solr.TextField" positionIncrementGap="100" omitNorms="true"> 
     <analyzer> 
      <tokenizer class="solr.StandardTokenizerFactory"/> 
      <filter class="solr.LowerCaseFilterFactory" /> 
      <filter class="solr.StopFilterFactory" /> 
      <filter class="solr.PorterStemFilterFactory" /> 
      <filter class="solr.PositionFilterFactory" /> 
     </analyzer> 
    </fieldtype> 

그리고 필드 선언 자체 :

<field name="Publication"    type="TField"   indexed="true"   stored="true" multiValued="true" /> 

그리고 요청 처리기 설정 :

<requestHandler name="/select/" class="solr.StandardRequestHandler" default="true" > 
     <lst name="defaults" > 
      <str name="defType">edismax</str> 
      <str name="qf">Publication</str> 
      <str name="fl">ID,score</str> 
      <str name="q.alt">*:*</str> 
      <str name="rows">10</str> 
     </lst> 
    </requestHandler> 

이상적인 시나리오는 텍스트 쿼리 및 반품을 처리하는이 필드 유형 사람들은 텍스트 쿼리와 일치하는 출판물 수에 대해 점수를 매겼습니다. 예를 들어 :

사람 A는 내용 "고양이 개 마우스", "고양이와 강아지 집", "바나나"

사람 B는 내용 "고양이 개 마우스", "고양이"세 가지 문서를 가지고 세 가지 문서를 가지고, "개"

사람 C 콘텐츠 "고양이", "개", "바나나"

텍스트 쿼리가 "고양이 개"인 경우 두 개의 문서를 가지고, 내가 점수 2 상단으로 A라는 사람을 좋아하는 것 (고양이 개 마우스), 고양이 개집 (고양이 개 마우스)와 일치), 사람 B는 점수 1 (일치하는 "고양이 개 마우스") 및 사람 C가 두 번째로 반환되지 않습니다.

현재 구현은 두 가지 측면에서 실패합니다. 우선, Solr은 multiValued 필드의 내용을 하나에 집어 넣어서 고양이 A와 개가 사람 A에 대한 별도의 발행물 항목에 표시된다는 사실이 중요하지 않은 것처럼 보이기 때문에 Person C를 반환합니다.

두 번째로 강력하게 첫 번째와 관련된 문서의 채점은 게시 필드의 모든 값을 연결 한 내용을 기반으로 TF-IDF입니다. 따라서 고양이와 개가 전체 문서 자료에서 동일한 횟수로 나타나기 때문에 사람 A와 B는 같은 점수를 갖게됩니다.

내가 원하는 것을 얻을 수있는 방법이 있습니까? 일반적으로 모든 항목을 전체적으로 가져 오는 대신 multiValued 필드의 개별 항목을 일치시키는 방법으로 문서의 점수를 매기는 방법이 있습니까?

답변

1

많은 검색 후, 점수 지정 및 검색 목적으로 multiValued 필드에 여러 항목이 있고 그 값을 연결 한 단일 항목이 동일한 것처럼 보입니다. 우리는 특정 사례에 대한 문제를 부분적으로 해결하기 위해 작성된 문서의 색인을 작성한 다음 해당 색인을 검색하고 저자를 대상으로 패싯을 작성했습니다. 이렇게하면 작성한 관련 문서의 수를 기준으로 정렬 된 저자 목록이 생성됩니다. 이 솔루션은 완벽한 것은 아니며 가능한 한 총 결과 수를 알 수 없거나 (패싯 항목 수를 계산할 수 없기 때문에) 또는 작성자에게보다 정교한 필터링을 수행 할 수없는 등 여러 가지 문제가 있습니다. .

생각 나는 막 다른 골목을 나눌거야.

관련 문제