작성한 텍스트 문서를 기반으로 색인을 작성했습니다.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 필드의 개별 항목을 일치시키는 방법으로 문서의 점수를 매기는 방법이 있습니까?