Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Optymalizacja wyszukiwarki
rav1989
post 12.08.2012, 17:22:22
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 5.07.2007

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


Witam,

Z racji tego, że wykorzystałem InnoDB nie moge skorzystać z FULLTEXT więc musiałem zrobić wyszukiwarke na LIKEach.
Strona jest oparta o framework CodeIgniter i do budowy zapytań skorzystałem z Active Records.

  1. public function search($search_query) {
  2. $search_query = urldecode(trim($search_query));
  3. $this->db->from('product');
  4. $this->db->select('product_name,product_price,product_img');
  5. $strings = explode(' ', $search_query);
  6. foreach ($strings as $match) {
  7. $this->db->or_like('product_name', $match);
  8. $this->db->or_like('product_desc', $match);
  9. }
  10. $products = $this->db->get()->result();
  11. if (empty($products))
  12. return false;
  13.  
  14. return $products;
  15. }
  16.  


Obecnie dopiero piszę i na bieżąco testuje stronę na localhoscie (WampServer Version 2.2, MySQL 5.5.24-log) no i akurat mam taki mały problem z tą wyszukiwarką, że działa ale muli.

Dlatego proszę o jakieś wskazówki jak możnaby to zoptymalizować/przyśpieszyć.

Pozdrawiam
Rav
Go to the top of the page
+Quote Post
darko
post 12.08.2012, 18:24:08
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Jest kilka rozwiązań tego problemu, niektóre nie wykluczają się wzajemnie:
- użycie osobnej tabeli (na silniku myisam) plus fulltext search
- zrezygnowanie z modeli orm na rzecz bezpośrednich zapytań do bazy danych
- użycie zewnętrznego silnika wyszukiwarki, np. Lucene/Solr albo Sphinx
Dla większych projektów polecam to ostatnie rozwiązanie, szczególnie Solr.

Ten post edytował darko 12.08.2012, 18:24:35


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
rav1989
post 12.08.2012, 19:44:59
Post #3





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 5.07.2007

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


Hmm... chyba skorzystam z klona na MyISAM i dodam FULLTEXT.
Czyli teraz będę musiał zmodyfikować kod tak, żeby wszystkie akcje które się dzieją na tej oryginalnej (InnoDB) działy się też na klonie MyISAM.
Co prawda teraz zamiast jednego zapytania INSERT, UPDATE, DELETE będą dwa bo jeszcze trzeba klona obsłużyć. Trzeba będzie to jeszcze jakoś zsynchronizować, żeby indeksy się zgadzały.
Mam nadzieję, że to załatwi sprawę.
Go to the top of the page
+Quote Post
d3ut3r
post 13.08.2012, 01:52:21
Post #4





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

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


Myślę, że zamiast klonowania zapytań spokojnie można sobie poradzić mechanizmem triggerów w mysql.

Jednak tak jak Darko napisał, jeżeli projekt jest większy i masz taką możliwość to skorzystaj z zewnętrznych mechanizmów indeksowania i wyszukiwania treści. Solr pod tym względem wydaje się przodować chociaż dopiero 1 raz zapoznałem się z nim całkiem niedawno.


--------------------
http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
Go to the top of the page
+Quote Post
rav1989
post 13.08.2012, 14:43:25
Post #5





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 5.07.2007

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


Cytat(d3ut3r @ 13.08.2012, 02:52:21 ) *
Myślę, że zamiast klonowania zapytań spokojnie można sobie poradzić mechanizmem triggerów w mysql.

Jednak tak jak Darko napisał, jeżeli projekt jest większy i masz taką możliwość to skorzystaj z zewnętrznych mechanizmów indeksowania i wyszukiwania treści. Solr pod tym względem wydaje się przodować chociaż dopiero 1 raz zapoznałem się z nim całkiem niedawno.


Fakt, zapomniałem o triggerach tongue.gif

Co do Solr to nie wiem czy serwer docelowy będzie go obsługiwał. Narazie wszystko powstaje na localhost i mogę sobie łatwo doistalować to czego mi brakuje. Chodzi o to, że jak napakuje super-hiper rozwiązań to może się okazać, że jedynym wyjściem będzie kupno drogiego dedyka zamiast hostingu. Nie chciałbym dodatkowo narażać kogoś na koszty.

Niemniej jednak przyjrzę się i temu rozwiązaniu bliżej smile.gif

Pozdrawiam
Rav
Go to the top of the page
+Quote Post
darko
post 13.08.2012, 14:52:51
Post #6





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Solr'a na zwykłym, "gołym" hostingu (bez dostępu do ssha, konfiguracji firewalla i screena) nie odpalisz, ale możesz śmiało testować lokalnie.

Ten post edytował darko 13.08.2012, 14:53:23


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 15:40