2016-10-23 5 views
2

Also ich versuche, die Ergebnisse der Solr-Suche mit dem Lingo-Clustering-Algorithmus, der mit solr 6 kommt. Es macht den Job, aber ich brauche es die Dokument-IDs (die IDs sind hier P_ID genannt) mit den Clustering-Ergebnissen. Ich habe daran gearbeitet und hatte kein Glück, jede Hilfe wird sehr geschätzt.
Hier ist die solrconfig.xml DateiAbrufen von Dokument-ID in Apache solr Clustering-Ergebnisse

<lib dir="${solr.install.dir:../../..}/contrib/clustering/lib/" regex=".*\.jar" /> 

    <lib dir="${solr.install.dir:../../..}/dist/" regex="solr-clustering-\d.*\.jar" /> 

    <requestHandler name="/clustering" 
       startup="lazy" 
       enable="${solr.clustering.enabled:true}" 
       class="solr.SearchHandler"> 
<lst name="defaults"> 
    <bool name="clustering">true</bool> 
    <bool name="clustering.results">true</bool> 
    <bool name="carrot.produceSummary">true</bool> 
    <!-- Logical field to physical field mapping. --> 
    <str name="carrot.url">P_ID</str> 
    <str name="carrot.title">input</str> 
    <str name="carrot.snippet">input</str> 

    <!-- Configure any other request handler parameters. We will cluster the 
     top 100 search results so bump up the 'rows' parameter. --> 
    <str name="defType">edismax</str> 
     <str name="qf"> 
     input^1.4 
     </str> 
     <str name="q.alt">*:*</str> 
    <str name="rows">100</str> 
    <str name="fl">*</str> 
    </lst> 
<arr name="last-components"> 
    <str>clustering</str> 
    </arr> 
    </requestHandler> 

Und hier die Ergebnisse, die ich bekomme:

{

"responseHeader":{ 
    "status":0, 
    "QTime":24}, 
    "response":{"numFound":16,"start":0,"docs":[ 
     { 
     "date":"2016-09-18 13:50:07.0", 
     "input":"Text", 
     "type":"q", 
     "U_ID":2, 
     "P_ID":1, 
     "_version_":1548945773383647232}, 
     { 
     "date":"2016-09-18 13:53:09.0", 
     "input":"Text 2", 
     "type":"q", 
     "U_ID":10, 
     "P_ID":2, 
     "_version_":1548945773385744384}, 
     { 
     "date":"2016-09-18 14:20:29.0", 
     "input":"Text 3", 
     "type":"q", 
     "U_ID":12, 
     "P_ID":3, 
     "_version_":1548945773385744385}, 
     { 
     "date":"2016-09-18 13:50:07.0", 
     "input":"Text 4", 
     "type":"q", 
     "U_ID":3, 
     "P_ID":4, 
     "_version_":1548945773385744386}, 
     ] 
    }, 
    "clusters":[{ 
     "labels":["label 1"], 
     "score":6.723284893605449, 
     "docs":["text ", 
     "Text 2", 
     "Text 4" 
     ]}, 
    { 
     "labels":["lable 2"], 
     "score":10.22078770519469, 
     "docs":["text 3", 
     "Text 2" 
     ]}, 
    { 
     "labels":["label 3"], 
     "score":8.32470981979922, 
     "docs":["text 1", 
     "text 3" 
     ]}, 
    ]} 

Wie Sie unter dem "Cluster" Abschnitt sehen es gibt mir die Cluster und die Dokumente, aber es gibt mir nicht die Dokument-IDs, ich habe sogar versucht, den Parameter fl zu P_ID (Dokument-ID) zu ändern, aber es hat nicht funktioniert. Es kann sogar die P_ID-Werte im Antwortabschnitt anzeigen, jedoch nicht im Clusterabschnitt.

+0

Was ist die Einstellung uniqueKey Ihres Schemas? Wenn ich die Dokumente richtig verstehe, verwendet die Clustering-Komponente dieses Feld als das Feld, das im Array docs zurückgegeben wird. – MatsLindh

+0

Der eindeutige Schlüssel ist die P_ID (P_ID ist Dokument-ID hier) und dies ist bereits im Schema angegeben, aber ich verstehe nicht, warum das Clustering die Dokumente zurückgibt, anstatt die P_IDs zurückzugeben. – user1512681

Antwort

0

Ok Also ich kam mit einer Lösung, die erfüllt, was ich brauchte. Alles, was ich tun musste, war, die Dokument-ID in das Element <uniqueKey></uniqueKey> im Schema zu schreiben.