![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 255 Pomógł: 0 Dołączył: 23.06.2009 Ostrzeżenie: (10%) ![]() ![]() |
Mam coś takiego:
Wyszukiwanie to nie działa zbyt dobrze bo gdy frazą do wyszukiwania jest np: "mickiewicz dziady" to wyszukiwarka znajduje wszystko gdzie jest mickiewicz ale nie koniecznie dziady wiec na poczatku wcale nie ma interesującego nas wyniku jest zwykle gdzieś daleko a chciałbym żeby to działało tak jak należy czyli żeby oba słowa musiały się znajdować w wyniku który ma zostać wyświetlony. Sytuacja jest taka sama z dłuższymi frazami. Jak to poprawić ? Ten post edytował mefistofeles 20.12.2009, 11:36:49 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Może to coś pomoże (nie jest to full text search, ale może coś pomoże):
where tytul like '%$szukane%' <- znajdzie wszystko, co zawiera daną frazę (dane frazy) where tytul like '%$szukane' <- znajdzie wszystko, co zaczyna się od podanej frazy (podanych fraz) where tytul like '$szukane%' <- znajdzie wszystko, co kończy się na podanej frazie (podanych frazach) Ten post edytował darko 20.12.2009, 13:50:29 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 255 Pomógł: 0 Dołączył: 23.06.2009 Ostrzeżenie: (10%) ![]() ![]() |
Niestety nie mogę używać LIKE gdyż strasznie obciąża bazę.
Ma ktoś jeszcze jakieś pomysły ? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Może usuń tą gwiazdkę?, Na stronie http://dev.mysql.com/doc/refman/5.1/en/fulltext-boolean.html znalazłem coś takiego:
SELECT * FROM quotes_table MATCH (quote) AGAINST ('"mangé" "pensé"' IN BOOLEAN MODE) SELECT * FROM quotes_table MATCH (quote) AGAINST ('+"mangé" +"pensé"' IN BOOLEAN MODE) Może w ten sposób oddzielaj kolejne frazy? |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Jaka to jest baza danych? MySQL? http://devzone.zend.com/article/1304 - zwróć uwagę na przykłady z kolumną SCORE.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 255 Pomógł: 0 Dołączył: 23.06.2009 Ostrzeżenie: (10%) ![]() ![]() |
Dzięki za przykłady!
Tylko jak podzielić frazę która wpisze osoba szukająca tak aby każde słowo było w innej zmiennej ? Explode ? Nigdy nie wiadomo czy ktoś wpisze jedno słowo czy dziesięć (zwykle oddziela je spacja). Jak to zrobić z głową ? |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
IMO preg_slipt, a jako wzorzec dowolna ilość białych znaków (\s+)
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 255 Pomógł: 0 Dołączył: 23.06.2009 Ostrzeżenie: (10%) ![]() ![]() |
Preg_split dał radę (IMG:style_emoticons/default/smile.gif)
Teraz w zmiennych c1 do c10 przechowuje kolejne wyrażenia jednak nie mogę sobię poradzić z użyciem więcej niż jednego w zapytaniu:
To działa, ale jak dodaje c2 w taki sposób:
to wyniki są takie same jak w 1 przypadku pod warunkiem że wyszukiwana fraza to tylko 1 słowo jak dodaje drugie to zwraca mi pusty wynik. Próbowałem jeszcze tak:
w tym wypadku zawsze zwraca pusty wynik. Analizowałem strony które mi wcześniej podaliście i ten 1 przykład niby powinien działać ale niestety oba nie dają rady. Pomożecie jeszcze ? // EDIT A jak robię tak:
To po wpisaniu 2 słów zwraca mi trochę inne wyniki ale wcale nie są to rezultaty zawierające oba słowa :/ Ten post edytował mefistofeles 21.12.2009, 10:30:20 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Mialem pisac wczesniej, ale zapomnialem.
Zostaw uzytkownikowi wieksza swobode w formie wpisywanej frazy. Pozwol mu zdecydowac czy chce szukac "ala ma kota" czy moze "+ala ma -kota". Dolacz do tego jakas prosta instrukcje - jest to duzo lepsze rozwiazanie. PS. Przepraszam za brak polskich znakow, nie mam chwilowo mozliwosci pisania inaczej. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 255 Pomógł: 0 Dołączył: 23.06.2009 Ostrzeżenie: (10%) ![]() ![]() |
Bardzo chętnie bym tak zrobił, ale w tym momencie nawet 'ala ma kota' jest nie do znalezienia
gdyż po wpisaniu tego wyszukiwarka znajdzie wszystko gdzie jest ala a nie koniecznie będzie to 'ala ma kota' tzn ten wynik się pojawi ale gdzieś daleko dlatego na początek chciałem po prosto rozbić wpisywaną frazę na części i wyszukać w ten sposób aby wynik zawierał wszystkie słowa ale coś mi to nie idzie. Nigdy nie robiłem wyszukiwarek ale chyba ktoś wie jak to zrobić z głową bo jak mówiłem można by użyć LIKE ale przy takiej liczbie rekordów w bazie jaką mam jest to poprostu niemożliwe (koszmarnie obciąża serwer już jedno zapytanie) |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Tak, 'ala ma kota' zwróci Ci zarówno rekordy, które mają samo 'ala' jak i te z 'ala ma kota', ale stosując to co opisałem wcześniej (http://forum.php.pl/index.php?s=&showtopic=138104&view=findpost&p=693318) będziesz mieć wyniki z 'ala ma kota' na pierwszym miejscu...
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 18.09.2025 - 17:24 |