2015-01-05 4 views
3

두 개의 조각이 있고 분산 된 검색을 사용하여 해결사 (soler 4.10.1 사용)를 구현하려고합니다. 그것은 suggester 각 조각을 실행하고 중복 결과를 떠나, 결과 집합을 조인 것 같습니다.Solr suggester : 분산 검색 (solrcloud) 중복 결과

<searchComponent name="suggest" class="solr.SuggestComponent"> 
    <lst name="suggester"> 
     <str name="name">titleSuggester</str> 
     <str name="lookupimpl">AnalyzingLookupFactory</str> 
     <str name="lookupimpl">FreeTextSuggesterFactory</str> 
     <str name="dictionaryimpl">DocumentDictionaryFactory</str> 
     <str name="field">title_sug</str> 
     <str name="weightField">rank</str> 
     <str name="suggestAnalyzerFieldType">shingleSuggest</str> 
     <str name="buildOnCommit">true</str> 
    </lst> 
</searchComponent>` 


<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy"> 
    <lst name="defaults"> 
    <str name="suggest">true</str> 
    <str name="suggest.count">10</str> 
    </lst> 
    <arr name="components"> 
    <str>suggest</str> 
    </arr> 
</requestHandler> 

http://localhost:8983/solr/collection1/suggest?suggest.dictionary=titleSuggester&shards.qt=/suggest&shards=shard1,shard2&suggest.q=an&wt=json&indent=true 결과 :

같이 위에서 볼 수
{ "responseHeader":{ 
    "status":0, 
    "QTime":12}, "suggest":{"titleSuggester":{ 
     "an":{ 
     "numFound":10, 
     "suggestions":[{ 
      "term":"an", 
      "weight":149, 
      "payload":""}, 
      { 
      "term":"an", 
      "weight":142, 
      "payload":""}, 
      { 
      "term":"an american", 
      "weight":6, 
      "payload":""}, 
      { 
      "term":"an affair", 
      "weight":4, 
      "payload":""}, 
      { 
      "term":"an 18th century", 
      "weight":2, 
      "payload":""}, 
      { 
      "term":"an 18th", 
      "weight":2, 
      "payload":""}, 
      { 
      "term":"an american hymn", 
      "weight":2, 
      "payload":""}, 
      { 
      "term":"an 18th century drawing room", 
      "weight":2, 
      "payload":""}, 
      { 
      "term":"an 18th century drawing", 
      "weight":2, 
      "payload":""}, 
      { 
      "term":"an american hymn (main", 
      "weight":2, 
      "payload":""}]}}}} 

, 결과 용어 "는"두 번 반환 된 각 샤드에서 하나되어 내 solrconfig.xml 파일에서 나는 다음 있습니다. 나는 거짓 DISTRIB과 같은 쿼리 = ( http://localhost:8983/solr/collection1/suggest?suggest.dictionary=titleSuggester&distrib=false&suggest.q=an&wt=json&indent=true)을 할 경우 예상 할 수로, 나는 단지에는 중복을 얻을 : 중복 결과를 제거 할 수있는 방법이

{ "responseHeader":{ 
    "status":0, 
    "QTime":1}, 
    "suggest":{"titleSuggester":{ 
     "an":{ 
     "numFound":10, 
     "suggestions":[{ 
      "term":"an", 
      "weight":149, 
      "payload":""}, 
      { 
      "term":"an 18th", 
      "weight":2, 
      "payload":""}, 
      { 
      "term":"an 18th century", 
      "weight":2, 
      "payload":""}, 
      { 
      "term":"an 18th century drawing", 
      "weight":2, 
      "payload":""}, 
      { 
      "term":"an 18th century drawing room", 
      "weight":2, 
      "payload":""}, 
      { 
      "term":"an absolution take", 
      "weight":1, 
      "payload":""}, 
      { 
      "term":"an absolution take her", 
      "weight":1, 
      "payload":""}, 
      { 
      "term":"an absolution take her to", 
      "weight":1, 
      "payload":""}, 
      { 
      "term":"an absolution take her to sea,", 
      "weight":1, 
      "payload":""}, 
      { 
      "term":"an affair", 
      "weight":4, 
      "payload":""}]}}}} 

있습니까?

+0

Solr에서이 작업을 수행하는 것을 선호하지만 솔루션을 얻지 못하면 클라이언트 측에서 작업을 수행합니다. –

+0

@ 당신이 알아낼 수 있었습니까? 필자의 경우,'distrib = false' 없이는 정말 높은 숫자를 얻었지만,'distrib = false'는 정확한 카운트를 얻습니다. – user1324887

+0

아니요. 처음에는 클라이언트에서 중복 된 항목을 필터링하기 만 했으므로 관련성이 없어졌습니다 ([여기] (https://issues.apache.org/jira/browse/SOLR-6246)에서 찾을 수 있음) suggester를위한 새로운 코어, 그리고 하나의 샤드를 사용했다. distribution = false는 코어 중 하나에서만 결과를 얻으므로 결과를 복제하지 않습니다. –

답변

0

Solr의 그룹 기능을 사용할 수 있습니다. =

& 그룹 = 사실 & group.field = 용어 & group.main이 동일한 용어 당 하나 개의 문서를 반환합니다

사실, 그리고 일반과 같은 형식으로 반환합니다 쿼리에 추가 query (group.main = true).

자세한 내용은 http://wiki.apache.org/solr/FieldCollapsing을 참조하십시오.

+0

불행히도 그룹 매개 변수를 추가해도 결과가 변경되지 않습니다. –