Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][zf] Zend_Search_Lucene, Wyszukiwanie z polskimi znakami
kirex
post
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 4
Dołączył: 3.03.2008

Ostrzeżenie: (0%)
-----


Witam

Mam problem z wyszukiwaniem polskich znaków w bibliotece zenda Zend_Search_Lucene.
Ogólnie wyszukiwanie działa dosyć dobrze, problem jest tylko gdy w szukanej frazie znajdzie się choć jeden polski znak, wówczas Lucene zwraca mi 0 rekordów. Cała strona ustawiona jest na kodowanie utf-8, takie też podawane jest przy tworzeniu indexów przez luncene.

Tworzenie index'ów wygląda w sposób przedstawiony poniżej, dane pobierane są z bazy i w pętl
 indexowane.

  1. <?php
  2. $doc = new Zend_Search_Lucene_Document();
  3. $doc->addField(Zend_Search_Lucene_Field::Keyword('name', $posts[$i]['name'], 'utf-8'));
  4. ...
  5. $doc->addField(Zend_Search_Lucene_Field::UnStored('text', $posts[$i]['text'], 'utf-8'));
  6. $index->addDocument($doc);
  7. ?>


Szukanie zaś wygląda tak:
  1. <?php
  2. $query = new Zend_Search_Lucene_Search_Query_MultiTerm();
  3. $query->addTerm(new Zend_Search_Lucene_Index_Term($search, 'text'), true);
  4. $index = new Zend_Search_Lucene('./tmp/index');
  5. return $index->find($query);
  6. ?>


Wydaje mi się, że wszystko jest tak jak powinno być a mimo to nie działa.
Może ktoś spotkał się już z takim  problemem i go rozwiązał ? Jeśli tak to prosze o pomoc ?
Z góry dzięki.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Juzef
post
Post #2





Grupa: Zarejestrowani
Postów: 45
Pomógł: 1
Dołączył: 15.02.2006
Skąd: Zakrzów

Ostrzeżenie: (0%)
-----


Hm, chyba mam problem w jakiś sposób związany z polskimi znakami. Strona jest na kodowaniu iso8859-2, dodając dokument do indeksu podaję wejściowe kodowanie i w indeksie podejrzanym przez Luke wszystko jest na miejscu, polskie znaki ładne. I wyszukiwanie działa.
Ale dodawanie dokumentów do indeksu robi się coraz wolniejsze, im więcej ich już tam jest. Aktualnie wrzuciłem 5000 szt. i aktualizacja jednego trwa parę sekund. Wcześniej doszedłem do 10k i już były pady totalne.
Podejrzewałem, że może Lucene zżera pamięć (limit 64mb) ale jeśli jakiś błąd php się pojawi, to jest to przekroczenie czasu wykonania (30sek.) w klasach Lucene związanych z obsługą plików indeksu. Sam indeks jest poprawny chyba, bo przez Luke mogę go otworzyć i wyszukiwać.
Jedna rzecz jest dziwna: w indeksie jest 5k rekordów, zaś Luke pokazuje "Number of terms" = 14 000. Przy czym niektóre termy są poucinane na polskich znakach, czyli jeśli wejściowo było słowo "szkoła" to tam figuruje "szko". Czy to jest normalne? W dokumentacji piszą, że duża ilość termów może zamulać, ale czy to jest duża ilość? Pliki indeksu mają razem ledwo 2MB.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 28.12.2025 - 00:46