Mam listę produktów, na którą składa się rezultat zapytania z kilku tabel, ogólnie sporo różnych kolumn.
W grę wchodzi sortowanie listy wynikowej, jak i stronicowanie.
I tutaj mój dylemat - czy lepiej jest tworzyć indexy tak, aby każdy wiersz wynikowy z lucene wyświetlić użytkownikowi, tak jakby dane pochodziły z bazy, czy może wyszukać produkty, i z listy wyników wyciągnąć id'ki z bazy, a same dane pobrać normalnie z bazy, za pomocą WHERE .. IN.
Chodzi o to, że 2 metoda pozwalałaby na budowanie mniejszych idexów - np chcę wyszukiwać tylko po kodzie produktu, nazwie i np jakimś krótkim opisie. W metodzie 1 oprócz tego, jako unIndexed musiałbym zamieścić jeszcze wszystkie inne potrzebne do wyswietlenia dane: ceny, kategorie, itp itd (a jak wspominałem, jest tego sporo). Jeśli w takim ztokenizowanym polu textowym jest w kazdym wierszu powiedzmy kilkadziesiąt słów a produktów kilka tysięcy to liczba koniecznych przechowywanych i przeszukiwanych danych będzie ogromna? O prędkości działania nie wspominając... Z drugiej strony - w drugiej metodzie, jeśli wyszukiwanie zwróci np 1000 id'ków to zapytanie WHERE ... IN będzie kosmiczne.
Oczywiście obie metody można usprawnić, np cachowaniem lub ograniczeniem liczby wyników (wyszukiwanie zwracające 1000 wierszy chyba nic nikomu nie daje

BTW w ogóle czytałem, że Zend_Search_Lucine jest średnio wydajny - w takim razie jakie alternatywy? Bo raczej nie LIKE
