2011-10-28 7 views
8

Sono interessato a interrogare Solr con query q e tracciare il suo richiamo di un set di documenti D quando vengono restituiti {10, 20, 30, ...} documenti.C'è un modo per Solr/Lucene di restituire i ranghi dei documenti selezionati invece dei risultati completi?

Attualmente, sto avendo i risultati completi, vale a dire un elenco di docids restituito (attraverso solrpy), e iterare attraverso di esso per trovare le fila dei D, cioè una mappatura da D ai loro indici nella ricerca risultati. Non richiedo rigorosamente la mappatura, solo i ranghi mappati.

C'è un modo per avere i ranghi di ritorno Solr/Lucene per un set di ID invece dei risultati completi?

Altri modi di affrontare questo problema:

  • Per una query, restituire il rango di documento d
  • Per una query fino a un rango specifico, di ritorno o meno documentano d è presente
  • Da una query q1 risultato fino a un numero specificato di record, restituire il numero di record corrispondenti a un'altra query q2
+0

+ 1ed it per una domanda così insolita. Posso chiederti quale problema intendi risolvere? \ – aitchnyu

+0

In generale, voglio rappresentare il richiamo di Solr dei documenti selezionati in diverse query. In particolare, sto analizzando i dati raccolti per il lavoro di linguistica computazionale, che consiste nel trovare il miglior articolo per una query linguisticamente vincolata. Devo essere in grado di costruire query diverse e determinare quanto bene risolvono il mio problema. – joeln

+0

Hmm, usare la libreria Lucene sembra una scommessa migliore. – aitchnyu

risposta

1

No, non riesco a pensare a un modo SOLR o Lucene per farlo. Penso che la soluzione più semplice sia quella di programmarlo da solo con un semplice HashSet ...

+0

In che modo un hash può essere d'aiuto? Diciamo che interrogare l'indice con l'ordinamento su un campo, e mi piacerebbe sapere a che punto un certo documento sarebbe nella lista. – toni

+0

Probabilmente è quello che stai già facendo: metti tutti i codID di D's in un set (HashSet), poi esegui un'iterazione sul set di risultati SOLR e controlla se l'ID è nel tuo set. Utilizzare un cursore SOLR se si sta andando a fondo nel set di risultati (molte pagine). –

4

È possibile recuperare il rango tramite il campo score.

Aggiungi &fl=KeyFieldName,score per recuperare l'ID del documento e il punteggio alla query. Se hai bisogno di tutti i campi aggiungi &fl=*,score alla tua richiesta.

Vedere http://wiki.apache.org/solr/SolrRelevancyFAQ#How_can_I_see_the_relevancy_scores_for_search_results per dettagli.

+1

Il campo del punteggio mi fornisce più informazioni di quelle di cui ho bisogno. In realtà non ho bisogno dei risultati della lista, ho solo bisogno di sapere a quale livello appare un particolare risultato. '& fl = KeyFieldName' sarebbe quindi sufficiente per me per poi guardare attraverso i risultati. Ma se ci sono migliaia di risultati, si tratta di molte più informazioni che vengono restituite dal server di quanto non lo siano, solo per sapere a quale livello appare un determinato valore KeyFieldName. – joeln

Problemi correlati