My Solr 인덱스에 중복 값이있는 다중 값 필드가 있습니다. 중복 된 항목을 제거하려면 어떻게해야합니까?Solr 중복 값을 다중 값 필드로 제거
인덱싱 할 때 다중 값 필드에 중복 값을 덮어 쓸 수 있습니까?
감사
My Solr 인덱스에 중복 값이있는 다중 값 필드가 있습니다. 중복 된 항목을 제거하려면 어떻게해야합니까?Solr 중복 값을 다중 값 필드로 제거
인덱싱 할 때 다중 값 필드에 중복 값을 덮어 쓸 수 있습니까?
감사
당신은 중복 된 값을 제거하기 위해 클라이언트 측에서 그것을 처리해야합니다.
토큰을 걸러 내려면 RemoveDuplicatesTokenFilterFactory (같은 위치에서 동일한 텍스트에 대해 작동)과 같은 구현을 사용자 정의 할 수 있습니다. 기본적으로 확장 기능을 작성하십시오. 또는
또한 패 시팅에 다중 값 필드를 사용하면면 처리 된 필드의 값이 한 번만 계산됩니다. 따라서 동일한 값을 여러 개 추가하더라도 패싯 개수 항목에 단일 값으로 반영됩니다. 이걸 시험해 봤어. 당신도 확인할 수 있습니다.
그러나 중복 값은 lengthNorm의 변경을 초래하므로 점수에 영향을 줄 수 있습니다.
Solr에서는 처리 할 수 있지만 UpdateRequestProcessor이므로 인덱싱 전에 발생하므로 분석 체인에 대해 배울 필요가 없습니다.
당신은 자바 또는 내가 같은 작업을 수행하기 위해 고군분투했다 ScriptUpdateProcessor
와 스크립트 언어의 번호를 사용할 수 있습니다. 이것은 나를 위해 일했다. 당신의 solrconfig.xml
<updateRequestProcessorChain name="deduplicateMultiValued" default="true">
<processor class="org.apache.solr.update.processor.UniqFieldsUpdateProcessorFactory">
<lst name="fields">
<str>multivaluedFieldXYZ</str>
</lst>
</processor>
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>
이 구성은 파티에 정말 늦게 SOLR 5.3.1에 대한
<updateRequestProcessorChain name="distinct-values" default="true">
<processor class="solr.DistributedUpdateProcessorFactory"/>
<processor class="solr.UniqFieldsUpdateProcessorFactory">
<str name="fieldName">field1</str>
<str name="fieldName">field2</str>
</processor>
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>
을 작동하지만 상단 대답은 SOLR 6.0에서 나를 위해 작동하지 않았다에 아래의 프로세서를 추가 다중 값 필드에 중복 항목을 추가하려고했습니다. UniqFieldsUpdateProcessorFactory
바로 전에 프로세서가 누락되었습니다. 그래서 내 solrconfig.xml이 같은 추가 뭔가 일 : YourFieldA 및 YourFieldB 당신의 schema.xml에서 필드를 정의
<updateRequestProcessorChain name="uniq-fields">
<processor class="org.apache.solr.update.processor.DistributedUpdateProcessorFactory"/>
<processor class="org.apache.solr.update.processor.UniqFieldsUpdateProcessorFactory">
<str name="fieldName">YourFieldA</str>
<str name="fieldName">yourFieldB</str>
</processor>
<processor class="solr.RunUpdateProcessorFactory" />
. 당신은 또한 적절한 requestHandler
즉,이를 추가해야합니다 :
<requestHandler name="/update" class="solr.UpdateRequestHandler" >
<lst name="defaults">
<str name="update.chain">uniq-fields</str>
</lst>
이 만 추가되는 중복을 방지 할뿐만 아니라 지정된 필드 업데이트에 색인에서 모든 중복을 제거하지 않습니다.
현재 버전의 Solr에서는 내부 lst/str 줄이 다음과 같이 한 줄로 표시됩니다. multivaluedFieldXYZ –
Ethan
이 경우 copyFields에서는 작동하지 않지만 문서가 가져올 때는 색인 생성. 이 시점에서 모든 중복 삽입이 제거됩니다. –