Обновление индекса Lucene.NET в реальном времени - PullRequest
1 голос
/ 30 июня 2011

Мне нужно использовать Lucene.NET для полнотекстового поиска в базе данных mysql.Я должен использовать InnoDB, и поэтому Lucene - мой выбранный поисковый поставщик.

Есть 2 поля, которые нужно проиндексировать, это varchar (200) и varchar (2000).Но проблема в том, что должна быть возможность полнотекстового поиска записи, как только она вставлена.Поэтому я должен вставить запись в индекс lucene и в базу данных одновременно.

Так возможно ли это сделать и сколько времени занимает одна вставка?Это для веб-приложения, и я ожидаю, что 500 вставок в секунду.

Если вы сделали это раньше, дайте мне знать ваши методы.Если это невозможно, мой единственный вариант - вернуться к SQLServer, чтобы использовать его полнотекстовый поиск.:(

PS

Меня не беспокоит производительность вставки базы данных. Но я не знаю, сколько времени Lucene потратит на его обновление.индекс.

Ответы [ 3 ]

1 голос
/ 30 июня 2011

Да, это возможно, используя функцию Lucene NearRealtimeSearch.

http://wiki.apache.org/lucene-java/NearRealtimeSearch

Но с тем объемом, который вы хотите обработать, вам придется ловко управлять оптимизацией / слиянием индексов при фиксации, если вы хотите поддерживать приличную производительность поиска.

1 голос
/ 30 июня 2011

Lucene.Net или SQLServer, если вы не найдете умный способ, у вас проблемы с 43 200 000 документов в день.

0 голосов
/ 30 июня 2011

Некоторые рекомендации здесь:

  • Имея столько данных, вставленных в пиковые моменты времени, имеет ли смысл сразу же включать их в индекс?Разве запланированное задание не может помочь?
  • Какой поиск вы выполняете в этих полях?Если это действительно просто, не излишни ли вы lucene?
  • Вы рассказали нам о томах записи, но как насчет чтения?Похоже, что данных будет довольно много, но если поиск выполняется не интенсивно, не достаточно ли выбора идентификатора из таблицы, где столбец типа «% search%» достаточно?

    Вы должны действительно получить подтверждение концепции с различными стратегиями индексации и провести стресс-тестирование, чтобы найти, какая из них подходит лучше всего.

...