Я пытаюсь использовать библиотеку AzureDirectory для хранения индекса Lucene.NET в учетной записи облачного хранилища Azure.
Я использую следующие версии:
- Microsoft.Windows.Azure.Storage 4.3.0.0
- Lucene.Net 3.0.3.0
- Lucene.Net.Store.Azure 3.0.5553.21100
И вызываем следующий метод:
public void UpdateDocument(Term keyTerm, Document document, string indexName)
{
using (var analyser = new StandardAnalyzer(LuceneVersion))
{
using (var directory = new AzureDirectory(cloudStorage.GetStorageAccount(), indexName, new RAMDirectory()))
{
using (var indexWriter = new IndexWriter(directory, analyser, true, IndexWriter.MaxFieldLength.UNLIMITED))
{
indexWriter.UpdateDocument(keyTerm, document);
}
}
}
}
Когда я вызываю метод всего 10 раз (из модульного теста), общее время составляет около 30 секунд.
Я пробовал различные изменения с помощью средства записи индекса, чтобы увидеть, можно ли добиться повышения производительности, но пока ничего. Я попытался изменить код, чтобы повторно использовать классы записи индекса и каталогов, но в итоге получил блокировки файлов. Я также хотел, чтобы индексный код был отделен от вызывающего, чтобы изолировать Lucene. Если я закомментирую indexWriter.UpdateDocument(keyTerm, document);
, то его отзывчивость говорит мне, что здесь медлительность.
Я хотел бы знать, делаю ли я что-то не так или что-то упускаю?