Использование RAMDirectory

Я не уверен, что проблема заключается в создании файлов или копировании их на диск Google. Если это последний, более простой подход - подключить диск непосредственно к экземпляру следующим образом

from google.colab import drive

drive.mount('drive')
[ 115] Затем вы можете получить доступ к любому элементу на вашем диске, как если бы это был жесткий диск, и скопировать ваши файлы с помощью команд bash:

!cp filename 'drive/My Drive/folder1/'

Другой альтернативой является использование shutil:

import shutil

shutil.copy(filename, 'drive/My Drive/folder1/')
14
задан james.garriss 26 June 2015 в 12:31
поделиться

1 ответ

Когда Вы не хотите постоянно хранить свои индексные данные. Я использую это для тестирования. Добавьте данные к своему RAMDirectory, Сделайте свои модульные тесты в RAMDir.
например.

 public static void main(String[] args) {
    try {
      Directory directory = new RAMDirectory();  
      Analyzer analyzer = new SimpleAnalyzer();
      IndexWriter writer = new IndexWriter(directory, analyzer, true);

ИЛИ

  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();
  }

Обычно, если вещи будут удаваться с RAMDirectory, то он будет в значительной степени хорошо работать с другими. т.е. постоянно сохранить Ваш индекс.
Альтернатива к этому является FSDirectory. Необходимо будет заботиться о полномочиях файловой системы в этом случае (который не допустим с RAMDirectory),

Функционально, нет явного преимущества RAMDirectory по FSDirectory (кроме того, что RAMDirectory будет явно быстрее, чем FSDirectory). Они оба сервер две различных потребности.

  • RAMDirectory-> Основная память
  • FSDirectory-> Вторичная память

Довольно подобный RAM и Жесткому диску.

Я не уверен, что произойдет с RAMDirectory, если он превысит предел памяти. Я был бы кроме a

OutOfMemoryException: система. SystemException

брошенный.

17
ответ дан 1 December 2019 в 13:48
поделиться