¿Cuándo debería usar Lucene's RAMDirectory? ¿Cuáles son sus ventajas sobre otros mecanismos de almacenamiento? Finalmente, ¿dónde puedo encontrar un ejemplo de código simple?Usando RAMDirectory
Respuesta
Cuando no desea almacenar permanentemente sus datos de índice. Lo uso para fines de prueba. Agregue datos a su directorio RAM, realice las pruebas de su unidad en RAMDir.
p.
public static void main(String[] args) {
try {
Directory directory = new RAMDirectory();
Analyzer analyzer = new SimpleAnalyzer();
IndexWriter writer = new IndexWriter(directory, analyzer, true);
O
public void testRAMDirectory() throws IOException {
Directory dir = FSDirectory.getDirectory(indexDir);
MockRAMDirectory ramDir = new MockRAMDirectory(dir);
// close the underlaying directory
dir.close();
// Check size
assertEquals(ramDir.sizeInBytes(), ramDir.getRecomputedSizeInBytes());
// open reader to test document count
IndexReader reader = IndexReader.open(ramDir);
assertEquals(docsToAdd, reader.numDocs());
// open search zo check if all doc's are there
IndexSearcher searcher = new IndexSearcher(reader);
// search for all documents
for (int i = 0; i < docsToAdd; i++) {
Document doc = searcher.doc(i);
assertTrue(doc.getField("content") != null);
}
// cleanup
reader.close();
searcher.close();
}
Por lo general, si las cosas funcionan con RAMDirectory, lo hará más o menos bien el trabajo con los demás. es decir, para almacenar permanentemente su índice.
Alterna a esto es FSDirectory. En este caso, tendrá que encargarse de los permisos del sistema de archivos (que no es válido con RAMDirectory)
Funcionalmente, no hay una ventaja clara de RAMDirectory sobre FSDirectory (aparte del hecho de que RAMDirectory será visiblemente más rápido que FSDirectory). Ambos sirven dos necesidades diferentes.
- RAMDirectory -> La memoria primaria
- FSDirectory -> La memoria secundaria
muy similar a la RAM & disco duro.
No estoy seguro de qué pasará con RAMDirectory si supera el límite de memoria. Me excepto A OutOfMemoryException
: System.SystemException
tirado.
hola, gracias por su respuesta ... ¿cuál es la ventaja de usar RAMDirectory sobre FSDirectory? Y también, ¿qué pasa si el tamaño del índice excede la memoria RAM? – Jimmy
Hay un límite de 2GM para el tamaño de un objeto. Si su RAMDirecotry excede eso, obtendrá una OutOfMemoryException incluso si tiene mucha RAM. – Barka
- 1. IndexNotFoundException si IndexSearcher pidió a RAMDirectory vacío
- 2. Necesito saber los pros y los contras de usar RAMDirectory
- 3. Usando nombres para discriminar instancias usando IoC
- 4. ImportError usando nose, no ImportError usando rawtesttest?
- 5. Analizando CSV usando OleDb usando C#
- 6. Usando scala.util.control.Exception
- 7. usando mysql_close()
- 8. Usando django.db.connection.queries
- 9. Usando ResourceManager
- 10. Usando IIterable
- 11. cadena usando "*"
- 12. Usando PropertyInfo.GetValue()
- 13. Usando OpenXmlReader
- 14. Usando System.Random
- 15. usando DirectoryWalker
- 16. Usando GetKeyState()
- 17. Usando TabWidget.setDividerDrawable()?
- 18. usando javascript
- 19. ¿Cómo dividir usando un carácter de prefijo usando expresiones regulares?
- 20. Decodifica audio usando libavcodec y juega usando libAO?
- 21. hibernate usando anotaciones o usando archivos de configuración de hibernación
- 22. cómo cerrar sesión en LinkedIn usando authrequest usando android?
- 23. Usando el código C de C++ usando autotools
- 24. Usando SQL, ¿cómo actualizo las filas, usando sus propios valores?
- 25. Autenticación usando LDAP contra ADAM usando seguridad de primavera
- 26. Capturar fotos usando la cámara web usando Actionscript
- 27. crear un diccionario usando 2 listas usando LINQ
- 28. Cómo construir un softphone (usando el protocolo SIP) usando C#
- 29. Copiar varios archivos usando comodines/recursivamente usando Wix
- 30. Llamando al teléfono sms api usando phonegap usando javascript
Internamente, utiliza un mapa simultáneo para organizar los archivos. – Njax3SmmM2x2a0Zf7Hpd