Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyszukiwarka dla bazy InnoDB
gothye
post
Post #1





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

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


Witam
Z potrzeby zastosowania kluczy obcych w bazie zaprojektowałem część tabel z Innodb , ale w jednej (gdzie mam umieszczone forum ,kategorie oraz posty użytkowników ) potrzebuję zbudować wyszukiwarke i nie moge zastosować klucza FULLTEXT .
Więc idąc dalej szukając rozwiązania zbudowałem silnik mniej więcej taki jaki ma forum phpbb3 gdzie tekst jest rozbijany na słowa a potem w dodatkowej tabeli SQL powiązane są słowa z id rekordu który go zawiera ,pojawiło się alę .... jeśli tekst zawiera dużą ilość słów (500>) cała akcja trwa 3-4 sekundy a na taką ilość czasu po przeładowaniu strony nie moge pozwolić sobie w projekcie .
Całość pisze w kohana 3.Sprowadzając do najprostrzej postaci model aby przyspieszyć dodawanie do bazy lecz i tak dalej wynik jest mizerny .

więc poszukuje rozwiązania aby zbudować wyszukiwarke , może ma ktoś pomysł ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
melkorm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


Cytat
Taki mały offtop, czy lepiej zrobić to na triggerach czy zrobić taki insert w aplikacji? Piszę w Zendzie, więc można by było stworzyc jakąś metodę do tego celu i ją wywoływać. Dzięki temu w razie zmiany źródła danych to nie powinno się wysypać. Małe są szanse na zmianę źródła, ale chciałbym poznać opinię na ten pomysł.


To też zależy czy na serwerze będziesz miał prawa do założenia triggera na bazie, zazwyczaj nie ma się do nich dostępu.

Ogólnie jeżeli używasz Zend'a to dobrze się składa, ponieważ możesz nadpisać klasę ActiveRecordu i tam nadpisać metody save / delete:
  1. class Foo extends Zend_Db_Table_Row
  2. {
  3. public function save()
  4. {
  5. // operacje dla dodawania / edycji
  6. // dodawanie jest wtedy keidy $this->_cleanData jest puste
  7. parent ::save();
  8. }
  9. public function delete()
  10. {
  11. // operacje dla usuwania
  12. parent ::delete();
  13. }
  14. }
  15. // później w modelu
  16. private $_rowClass = 'Foo';
  17.  
  18. // i możesz normalnei robić
  19. $r = $model->createRow();
  20. $r->bar = 'newbar';
  21. $r->Save();
  22.  



Mam nadzieję że wyjaśniłem (IMG:style_emoticons/default/smile.gif)

PS. Musisz także pamiętać o tym że przy tej metodzie nie zadizałają funkcje typu:
  1. $model->delete(warunki);
  2. $model->update(warunki);


Ten post edytował melkorm 8.08.2011, 05:31:23
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: 15.10.2025 - 03:07