2011-10-28 9 views
8

Estoy interesado en consultar Solr con la consulta q y graficando su recuperación de un conjunto de documentos D cuando se devuelven {10, 20, 30, ...} documentos.¿Hay alguna manera para que Solr/Lucene devuelva los rangos de los documentos seleccionados en lugar de los resultados completos?

Actualmente, estoy teniendo los resultados completos, es decir, una lista de docIDs devuelto (a través de solrpy) y repite el proceso para encontrar las filas de D, es decir, una correspondencia de D a sus índices en la búsqueda resultados. No exijo estrictamente el mapeo, solo los rangos mapeados.

¿Hay alguna manera de tener rangos de retorno de Solr/Lucene para un conjunto de ID en lugar de los resultados completos?

Otras formas de abordar este problema:

  • Para una consulta, devolver el rango de documento d
  • Para una consulta hasta un rango especificado, devolver si o no documenta d es
  • presente
  • de una consulta Q1 resultan hasta un número especificado de registros, devolver el número de registros coincidentes por otra consulta Q2
+0

+ 1ed para una pregunta tan inusual. ¿Puedo preguntar qué problema tiene la intención de resolver? \ – aitchnyu

+0

En general, quiero registrar la recuperación de Solr de los documentos seleccionados bajo diferentes consultas. Más específicamente, estoy analizando los datos recopilados para el trabajo de lingüística computacional, que implica encontrar el mejor artículo para una consulta limitada lingüísticamente. Necesito poder construir diferentes consultas y determinar qué tan bien resuelven mi problema. – joeln

+0

Hmm, usar la biblioteca Lucene parece una mejor opción. – aitchnyu

Respuesta

1

No, no puedo pensar en una forma SOLR o Lucene para hacer esto. Creo que la solución más simple aquí es programarlo usted mismo con un simple HashSet ...

+0

¿Cómo podría ayudar un hash? Digamos que consulto el índice con clasificación en un campo, y me gustaría saber en qué rango estaría un determinado documento en la lista. – toni

+0

Probablemente sea lo que ya está haciendo: ponga todos los codID de D'en un conjunto (HashSet), luego itere sobre el conjunto de resultados de SOLR y verifique si el ID está en su conjunto. Utilice un cursor SOLR si va a profundizar en el conjunto de resultados (muchas páginas). –

4

Puede recuperar el rango por campo score.

Adjunte &fl=KeyFieldName,score para recuperar la identificación y la puntuación del documento a su consulta. Si necesita todos los campos, añada &fl=*,score a su consulta.

Ver http://wiki.apache.org/solr/SolrRelevancyFAQ#How_can_I_see_the_relevancy_scores_for_search_results para más detalles.

+1

El campo de puntuación me da más información de la que necesito. Realmente no necesito los resultados de la lista, solo necesito saber en qué rango aparece un resultado particular. '& fl = KeyFieldName' sería, por lo tanto, suficiente para que yo pueda ver los resultados. Pero si hay miles de resultados, se trata de mucha más información que la que debe ser enviada del servidor, solo para saber en qué rango aparece un cierto valor de KeyFieldName. – joeln

Cuestiones relacionadas