2017-05-15 9 views
0
Solr Version: 6.3.0 
Cloud: Yes 
Shards: Single(1) 
Data Size: 50GB 
Records: 12M 

주어진 컬렉션에서 관련 ID를 찾으려고하는 Solr Join 쿼리가 있습니다 (예 자체 조인). 이로 인해 성능이 저하되었습니다.Solr 파서 퍼포먼스 문제에 합류하십시오.

Solr은 언급 된 q 필터와 관계없이 from_field에서 모든 용어를 검색 한 다음 to_field 용어와 교차하려고 시도합니다. Join parser에서 to_field와 교차하기 전에 용어를 필터링하도록 solr에게 요청할 수있는 방법이 있습니까?

우리는 주어진 solr 필드에 대해 약 9M 용어를 사용합니다.이 필드는 성능 저하의 원인이라고 가정합니다.

"join": { 

    "{!join from=from_field to=to_field fromIndex=insight_pats_1_shard1_replica1}to_field: \u0001\u0000\u0000\u0000\u0000\u0000\u0003X\u0002H": { 
     "time": 16824, 
     "fromSetSize": 1, 
     "toSetSize": 0, 
     "fromTermCount": 8561723, 
     "fromTermTotalDf": 8561723, 
     "fromTermDirectCount": 8561505, 
     "fromTermHits": 0, 
     "fromTermHitsTotalDf": 0, 
     "toTermHits": 0, 
     "toTermHitsTotalDf": 0, 
     "toTermDirectCount": 0, 
     "smallSetsDeferred": 0, 
     "toSetDocsAdded": 0 
    } 

}, 
"rawquerystring": "*:*", 
"querystring": "*:*", 
"parsedquery": "(+MatchAllDocsQuery(*:*))/no_coord", 
"parsedquery_toString": "+*:*", 
"explain": { }, 
"QParser": "ExtendedDismaxQParser", 
"altquerystring": null, 
"boost_queries": null, 
"parsed_boost_queries": [ ], 
"boostfuncs": null, 
"filter_queries": [ 

    "account_ids:1", 
    "{!join from=from_field to=to_field fromIndex=insight_pats_1}to_field:7733576" 

], 
"parsed_filter_queries": [ 

    "account_ids:1", 
    "JoinQuery({!join from=from_field to=to_field fromIndex=insight_pats_1_shard1_replica1}to_field: \u0001\u0000\u0000\u0000\u0000\u0000\u0003X\u0002H)" 

] 

답변

0

는 JoinQueryParser

  • 기본적으로

    ScoreJoinQParser

    • 가능한 가입 파서의 두 가지 유형이 있습니다! 가입은 JoinQueryParser를 사용하지만 크기 수백만의 기록에 합류 최적 없습니다.

      SOLR에! join parser 명령에 매개 변수 score = none을 추가하여 ScoreJoinQParser를 사용하도록 요청할 수 있습니다 (아래보기 참조).

      http://localhost:8983/solr/mycollection/select?fq={!join from=from_field to=to_field fromIndex=from_collection score=none}&indent=on&q=*:*&wt=json&debugQuery=on 
      

      우리는 from_field 기간은 8 백만

      의 범위에있는 성능 30 배 향상을 달성 할 수있다