Preguntándose cómo lograr la paginación en Lucene, ya que no es inherentemente compatible con la paginación. Básicamente, necesito buscar 'top 10 entries' (basado en algún parámetro), luego 'next 10 entries', etc. Y al mismo tiempo, no quiero que Lucene acapare la memoria. Cualquier consejo sería apreciado. Gracias de antemano.cómo lograr la paginación en lucene?
Respuesta
Tendrá que aplicar su propio mecanismo de búsqueda, algo similar a la siguiente.
IList<Document> luceneDocuments = new List<Document>();
IndexReader indexReader = new IndexReader(directory);
Searcher searcher = new IndexSearcher(indexReader);
TopDocs results = searcher.Search("Your Query", null, skipRecords + takeRecords);
ScoreDoc[] scoreDocs = results.scoreDocs;
for (int i = skipRecords; i < results.totalHits; i++)
{
if (i > (skipRecords + takeRecords) - 1)
{
break;
}
luceneDocuments.Add(searcher.Doc(scoreDocs[i].doc));
}
Usted encontrará que la iteración de la matriz scoreDocs será ligera como los datos contenidos en el índice no se utiliza realmente hasta que se llama al método searcher.Doc.
Tenga en cuenta que este ejemplo fue escrito en contra de una versión ligeramente modificada del Lucene.NET 2.3.2, pero el principio básico debe trabajar contra cualquier versión reciente de Lucene.
Estoy de acuerdo , los resultados en Lucene no son tan pesados como los resultados al consultar una base de datos para que pueda implementar fácilmente métodos de paginación personalizados sin tener que lidiar con problemas de rendimiento –
El problema aquí es cuando busca un gran conjunto de datos con mayor número de paginación. . Es como buscar algo y luego omitir una parte de la búsqueda. – Ruwantha
Otra versión del ciclo, continuando con el fragmento de código de Kane;
....................
ScoreDoc[] scoreDocs = results.scoreDocs;
int pageIndex = [User Value];
int pageSize = [Configured Value];
int startIndex = (pageIndex - 1) * pageSize;
int endIndex = pageIndex * pageSize;
endIndex = results.totalHits < endIndex? results.totalHits:endIndex;
for (int i = startIndex ; i < endIndex ; i++)
{
luceneDocuments.Add(searcher.Doc(scoreDocs[i].doc));
}
Uso la siguiente forma de paginar, puede ser que ayude a alguien. Si conoce una mejor estrategia, específicamente desde el punto de vista del rendimiento, comparta.
public TopDocs search(String query, int pageNumber) throws IOException, ParseException {
Query searchQuery = parser.parse(query);
TopScoreDocCollector collector = TopScoreDocCollector.create(1000, true);
int startIndex = (pageNumber - 1) * MyApp.SEARCH_RESULT_PAGE_SIZE;
searcher.search(searchQuery, collector);
TopDocs topDocs = collector.topDocs(startIndex, MyApp.SEARCH_RESULT_PAGE_SIZE);
return topDocs;
}
- 1. la paginación en playframework
- 2. ¿Cómo implementa la paginación en ASP.NET MVC?
- 3. ¿Cómo se implementa la paginación en PHP?
- 4. ¿Cómo manejar la paginación en asp.net mvc?
- 5. ¿Cómo puedo lograr ThreadPool.Join?
- 6. ¿Cómo ejecutas Lucene en .net?
- 7. Lucene indexación en tiempo real?
- 8. Cómo deshabilitar Paginación en WebGrid
- 9. ¿Cómo implementar paginación en Mongodb?
- 10. ¿Cómo lograr la asincronía en lugar de paralelismo en F #
- 11. Cómo funciona Lucene
- 12. Cómo lograr alignParentBottom = propiedad "true" en LinearLayout
- 13. Cómo lograr glOrthof en OpenGL ES 2.0
- 14. cómo lograr extraer texto en rieles?
- 15. ¿Cómo lograr const-correctness en C#?
- 16. Cómo lograr "AuthType None" en Apache 2.2
- 17. ¿Cómo podría lograr gotoxy() en gcc
- 18. Lograr multi-core en Java: ¿cómo?
- 19. Cómo lograr un deftype recursivo
- 20. Cómo lograr esta función en C/C++
- 21. ¿Cómo lograr este efecto plegable en Android?
- 22. en Java, ¿cómo lograr escanear puertos UDP?
- 23. ¿Cómo puedo lograr la funcionalidad de initcap en MySQL?
- 24. ¿Cómo lograr que QUnit imprima rastreos en la excepción?
- 25. Cómo hacer la paginación con mangosta
- 26. ¿Cómo hacer la paginación con cancan?
- 27. Cómo escribir la lógica de paginación?
- 28. cómo manejar la paginación con Backbone.Marionette
- 29. Paginación en CouchDB?
- 30. Paginación de Objectify
verificación de la respuesta aprobada en este post: [4 Lucene paginación] [1] [1]: http://stackoverflow.com/a/24533377/1080485 –