Zend_Search_Lucene пытается выделить 3503812093817007931 байт - PullRequest
13 голосов
/ 23 февраля 2012

У меня есть около 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.

Имеет ли Lucene серьезныепроблемы или я что-то испортил сам?

Ответы [ 2 ]

2 голосов
/ 26 февраля 2012

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

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

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

0 голосов
/ 27 марта 2012

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

cat file.html | grep -i about для поиска строк, содержащих слово about.

или

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...