Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem

Lucene + utf8

Zdecydowałeś się na tworzenie interaktywnych stron przy pomocy PHP? Chcesz w łatwy i szybki sposób zarządzać danymi na swojej stronie? Tutaj znajdziesz pomoc w napotkanych przy tym trudnościach.

Lucene + utf8

Post 18.03.2009, 14:11:16

Witam,
Mam pewien problem odnośnie phpowej implementacji biblioteki Lucene z Zenda...

Otóż, wszystko działa jak powinno, do mementu gdy chcę zapisać mój nowy dokument do indeksu. Indeks jest tworzny automatycznie przez użytkownika pod którym ddziała apache z php. Dokument jest tworzony na podstawie danych z tabeli bazy danych ... i tu zaczna się problem ... Dane są kodowane w UTF-8, wg tego co napisano w manualu tej biblioteki na stronie Zenda, dla utf8 konieczne jest ustawienie odpowiedniego analizatora w ten sposób :
Kod: Zaznacz cały
Zend_Search_Lucene_Analysis_Analyzer::setDefault(
    new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8());

co zrobiłem...
Błąd który otrzymałem za pierwszym razem zasugerował że problem leży w funkcji strlen() jednakże potem ów błąd znik i pojawił się inny a mianowici :

Fatal error: Maximum execution time of 30 seconds exceeded in /home/user/scieżka_do_katalogu_z_biblioteką/Zend/Search/Lucene/Storage/File/Filesystem.php on line 182
Błąd jest o tyle zastanawiający ze próbuję zapisać pojedyńczy dokument, który ma ustawione 6 pól które do tego sa bardzo lekkie(po 1- 2 linijki tekstu).

182 linijka pliku o którym mowa w błędzie wygląda jak następuje:
fwrite($this->_fileHandle, $data);
i jest to cześć funkcji odpowiadającej za zapis danych do pliku:
Kod: Zaznacz cały
protected function _fwrite($data, $length=null)
    {
        if ($length === null ) {
182.    fwrite($this->_fileHandle, $data);
        } else {
            fwrite($this->_fileHandle, $data, $length);
        }
    }


Wygląda na to, że długość danych jest nieoszacowana ... lub oszacowana niepoprawnie. Nie wiem jednakże skąd błąd zapisu ... wygląda to jak jakaś nieskonczona pętla...
Nie jest to na pewno kwestia zapisu do pliku, pozwolenia są ustalone na teraz na 0777.

W sumie korzystam z lucene juz jakiś czas i pierwszy raz zdarza mi się coś takiego...
Z góry dzięki za info .
pozdrawiam
Demaio
Sly

Posty: 35
Dołączył(a): 19.04.2005
Lokalizacja: Siedlce

Post 18.03.2009, 18:20:11

No i rozwiązanie problemu z lucene :

; overload(replace) single byte functions by mbstring functions.
; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
; etc. Possible values are 0,1,2,4 or combination of them.
; For example, 7 for overload everything.
; 0: No overload
; 1: Overload mail() function
; 2: Overload str*() functions
; 4: Overload ereg*() functions
mbstring.func_overload = 0

moje ustawienie mbstring.func_overload było 3 ... po ustawieniu go na 0 wszystko wróciło do normy. Lucene znów śmiaga jak marzenie ... podobno działa wewnętrznie z utf8, jak widać zamiana funkcji str* na mb_str* powoduje, że dokument nie moze być zapisana do indeksu ...
Demaio
Sly

Posty: 35
Dołączył(a): 19.04.2005
Lokalizacja: Siedlce


Powrót do PHP i bazy danych


 


  • Podobne wątki
    Odpowiedzi
    Wyświetlone
    Ostatni post

Kto przegląda forum

Użytkownicy przeglądający ten dział: Google Adsense [Bot] i 6 gości

Hosting, Domeny, SSL

Subskrypcja

Mamy 51973 zarejestrowanych użytkowników.
Najnowszy użytkownik: Eddierob


Nasi użytkownicy napisali:

  • 938345 wiadomości
  • w 247865 tematach

Najnowsze wpisy na blogu

Najnowsze artykuły

Najaktywniejsi (ostatnie 30 dni)


cron