Подтвердить что ты не робот

Zend_Search_Lucene пытается выделить 3503812093817007931 байт

У меня около 250 килобайт статического HTML, который я должен выполнить для поиска. Я решил, что для этого воспользуюсь Zend Lucene. Создание индексов занимает несколько секунд, и все хорошо и хорошо, за исключением случаев, когда я ищу "about", это заканчивается следующим:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 
3503812093817007931 bytes) in /var/www/u1938159/data/www/-----
/protected/vendors/Zend/Search/Lucene/Storage/File/Filesystem.php on line 163

Другие слова, похоже, в порядке. Кроме того, файлы содержат некоторые иностранные тексты. Поэтому я должен использовать анализатор, нечувствительный к регистру

Zend_Search_Lucene_Analysis_Analyzer::setDefault(
    new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive()
);
Zend_Search_Lucene_Search_QueryParser::setDefaultEncoding('utf-8');

В этом случае для загрузки требуется бесконечная вечность и не работает при этом:

Error occured while file reading.

Есть ли у Люцене серьезные проблемы или я сам что-то испортил?

4b9b3361

Ответ 1

У Lucene нет этих проблем, но Zend_Search_Lucene имеет. Я не уверен, сколько вам нужно искать, и если это одно время, но я бы посмотрел на Apache Solr или ElasticSearch.

Можете ли вы расширить свой вопрос некоторыми данными?

Есть также несколько размещенных сервисов, сообщите мне, если вам нужно больше указателей.

Ответ 2

Я не знаю, какая конкретная проблема с Zend Lucene здесь, но если вы пытаетесь выполнить поиск по относительно маленькому HTML файлу, вы можете попробовать просто использовать grep. Например, в командной строке:

cat file.html | grep -i about, чтобы найти строки, содержащие слово about.

или

cat file.html | grep -i -o -P '.{30}About.{30}', если вам нужно только 30 символов с каждой стороны слова.