2012-11-13 3 views
0

Solr 그룹화 결과를 사용 중입니다. 그러나 그것은 잘못 행동합니다. Solr - 그룹화 결과가 잘못 계산되었습니다.

enter image description here

나는 이메일 필드의 기초에 그룹화합니다. 내 데이터베이스에는 이메일 주소 " [email protected]"에 2 행이 있지만 SOLR은 7147 numFound를 나타내며 2가되어야합니다.

"ashhaf63"과 같은 특정 이메일 주소로 검색하려고하면 @ hotmail.com "을 그룹화하여 완벽한 결과를 보여 주며 올바른 numFound 속성에 2를 표시합니다.

enter image description here

나는, 내가 시작에서 텍스트 필드 유형을 사용했다, 그것 때문에 내 SOLR 스키마 필드 타입이라고 생각하지만 난 지금 내 자신의 필드 유형으로 변경되었습니다. 내 자신의 필드 형식을 정의하고 지금 내 자신의 필드 형식을 사용합니다.

enter image description here

enter image description here

내 자신 필드 유형을 사용한 후, 난 같은 문제에 직면하고있다.

답변

2

그룹 응답을 보면 그룹이 전체 전자 메일 주소가 아닌 <str name="groupValue">hotmail</str> 주소에 "핫메일"이있는 모든 전자 메일로 구성되어 있기 때문에 7147 개의 문서가 일치하는 것으로 나타납니다. 이 동작은 필드의 값이 "[email protected]"과 같은 완전한 문자열로 인덱싱되지만, email fieldType의 정의에서 필드 값의 토큰 화를 수행하고 있기 때문에 발생합니다. 그 결과 해당 필드에 대해 여러 개의 색인 된 값이 생성됩니다. 특히 영숫자가 아닌 모든 문자의 값을 분할하는 StandardTokenizerFactory 따라서 동일한 이메일 주소가 "ashhaf63", "hotmail"및 "com"의 세 가지 개별 값으로 인덱싱됩니다. 다음과 같은 새로운 분야 만들

<!-- The StrField type is not analyzed, but indexed/stored verbatim. --> 
<fieldType name="string" class="solr.StrField" sortMissingLast="true" /> 

:이 때문에

, 나는 다음과 같은 단순한 문자열 fieldType를 사용하는 새로운 분야를 만드는 것이 좋습니다 수행 다음

<field name="emailaddress" type="string" stored="true" indexed="true"/> 

당신의 이 새로운 emailaddress 필드를 그룹화하면 전체 전자 메일 주소 값을 그룹화합니다.

관련 문제