2012-02-23 13 views
13

Ho circa 250kb di codice HTML statico che devo cercare. Ho pensato che avrei usato Zend Lucene per quello. La creazione di indici richiede pochi secondi e tutto è bello e buono, tranne se la ricerca di "circa" finisce con questo:Zend_Search_Lucene tenta di allocare 3503812093817007931 byte

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 

Altre parole sembrano essere ok per esso. Inoltre, i file contengono alcuni testi stranieri. Quindi devo usare caso analizzatore insensibile

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

In questo caso ci vuole un'eternità per caricare e non funziona affatto schiantarsi con questo:

Error occured while file reading. 

non Lucene hanno problemi gravi o fatto io rovina qualcosa da solo?

+0

Quanti file html ci sono? – raina77ow

risposta

2

Lucene non ha questi problemi, ma Zend_Search_Lucene ha. Non sono sicuro di quanto devi cercare e se questa è una cosa sola, ma guarderei su Apache Solr o ElasticSearch.

Puoi estendere la domanda con alcuni dati?

Ci sono anche un paio di servizi in hosting, fammi sapere se hai bisogno di più suggerimenti.

-1

Non so quale sia il problema specifico con Zend Lucene, ma se stai cercando di cercare in un file HTML relativamente piccolo, potresti provare a utilizzare solo grep. Ad esempio, nella riga di comando:

cat file.html | grep -i about per trovare le righe contenenti la parola su.

o

cat file.html | grep -i -o -P '.{30}About.{30}' se si desidera solo 30 caratteri su entrambi i lati della parola circa.

+0

Downvoted perché la risposta è irrilevante alla domanda. Non stava chiedendo modi alternativi di cercare - stava chiedendo come risolvere un errore specifico. – NickG

Problemi correlati