두 개의 조각이 있고 분산 된 검색을 사용하여 해결사 (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":""}]}}}}
있습니까?
Solr에서이 작업을 수행하는 것을 선호하지만 솔루션을 얻지 못하면 클라이언트 측에서 작업을 수행합니다. –
@ 당신이 알아낼 수 있었습니까? 필자의 경우,'distrib = false' 없이는 정말 높은 숫자를 얻었지만,'distrib = false'는 정확한 카운트를 얻습니다. – user1324887
아니요. 처음에는 클라이언트에서 중복 된 항목을 필터링하기 만 했으므로 관련성이 없어졌습니다 ([여기] (https://issues.apache.org/jira/browse/SOLR-6246)에서 찾을 수 있음) suggester를위한 새로운 코어, 그리고 하나의 샤드를 사용했다. distribution = false는 코어 중 하나에서만 결과를 얻으므로 결과를 복제하지 않습니다. –