Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zend_Search_Lucene
Martio
post
Post #1





Grupa: Zablokowani
Postów: 167
Pomógł: 2
Dołączył: 15.02.2004

Ostrzeżenie: (30%)
XX---


Kiedyś był problem z polskimi znakami. Czy wiecie może czy ten błąd już poprawiono? W manualu nic nie jest napisane.

Ten post edytował Martio 17.03.2007, 18:46:04
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
konys
post
Post #2





Grupa: Zarejestrowani
Postów: 100
Pomógł: 7
Dołączył: 5.11.2005

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


Osobiście miałem niewielki problem z indeksowaniem niektórych polskich liter (ż,ś, może coś jeszcze) (korzystam z UTF-8). Poprawiłem w pliku Zend\Search\Lucene\Analysis\Analyzer\Common\Text.php funkcję

  1. <?php
  2. public function reset()
  3. {
  4. $this->_position = 0;
  5.  
  6. if ($this->_input === null) {
  7. return;
  8. }
  9.  
  10. // convert input into ascii
  11. $this->_input = iconv($this->_encoding, 'UTF-8'/*'ASCII//TRANSLIT'*/, $this->_input);
  12. $this->_encoding = 'UTF-8'/*'ASCII'*/;
  13. }
  14. ?>


oraz w Zend\Search\Lucene\Search\QueryLexer.php zmieniłem 346 linijkę (w funkcji tokenize())
  1. <?php
  2. $strLength = iconv_strlen($inputString, 'UTF-8'/*$encoding*/);
  3. ?>


Na szybkiego wydaje się działać, ale nie dałbym temu kodowi 100% gwarancji...

____________________________________________________
Znalazłem trochę lepsze rozwiązanie:

w bootstrap file dodaj następujące ustawienia:
  1. <?php
  2. mb_internal_encoding('UTF-8');
  3. iconv_set_encoding('input_encoding', 'UTF-8');
  4. iconv_set_encoding('output_encoding', 'UTF-8');
  5. iconv_set_encoding('internal_encoding', 'UTF-8');
  6. ?>


po wystartowaniu bazy:

  1. <?php
  2. $db->query('SET CHARACTER SET utf8');
  3. ?>


w pliku Zend/Search/Lucene/Search/QueryParser.php zmień wartość atrybutu $_defaultEncoding
  1. <?php
  2. private $_defaultEncoding = 'UTF-8';
  3. ?>


i przy indeksowaniu danych podawaj w jakim chcesz je wprowadzić kodowaniu - np.
  1. <?php
  2. $doc->addField(Zend_Search_Lucene_Field::UnStored('contents', $contents, 'UTF-8'));
  3. ?>


Powinno działać

Ten post edytował konys 20.03.2007, 12:33:15
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 - 02:09