Zend_Search_Lucene尝试分配3503812093817007931个字节


Zend_Search_Lucene tries to allocate 3503812093817007931 bytes

我有大约250kb的静态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有严重问题吗?还是我自己搞砸了?

Lucene没有这些问题,但Zend_Search_Lucene有。我不确定你需要搜索多少,如果这是一次性的,但我会研究Apache Solr或ElasticSearch。

你能用一些数据来扩展你的问题吗?

还有一些托管服务,如果你需要更多的指针,请告诉我。

我不知道Zend-Lucene的具体问题是什么,但如果你试图搜索一个相对较小的HTML文件,你可能想尝试只使用grep。例如,在命令行上:

CCD_ 2来查找包含单词about的行。

cat file.html | grep -i -o -P '.{30}About.{30}',如果你只想在单词的两边各有30个字符。