![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 0 Dołączył: 9.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Mam zapytanie pełnotekstowe jednak nic nie zwraca
Powie mi ktos czy jest to dobrze zbudowane? pierwszy raz uzywam wyszukiwania pełnotekstowego wiec nie wiem czy dobrze sie do tego zabieram. Chce przeszukac 3 pola (nazwa, opis, firma) w bazie pod katem jednego slowa i tak przy okazji co zrobic by przy wyswietlaniu wynikow z bazy wyswietal mi alfabetycznie ale z uwzglednieniem polski znakow bo teraz a mi znaki a;cznie ale znaki polskie sa po "z" z gory dzieki Ten post edytował di@blo 24.04.2008, 15:52:38 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
składnia jest właściwa.
czy tabela `sprzet` jest typu MyISAM ? czy na kolumnach `nazwa`, `opis`, `firma` msz założony index FULLTEXT ? a co do sortowania ... jakie porównywanie (collation) masz dla bazy / tabeli / pola po którym sortujesz? jakie masz kodowanie ogonków w bazie ? -------------------- - Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... - |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 0 Dołączył: 9.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Baza typu MyISAM
index FULLTEXT tez jest metody porownywania napisow to latin2_general_ci a co do kodowania ogonkow to nie wiem jakie i jak to sprawdzic |
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
wstaw przed mysql_query
i pokaż mi co się wyświetla ... a co do kodowania - skoro dane z bazy poprawnie wyświetlają się na jakiejś stronce, to znaczy że są w takim samym kodowaniu jak ta stronka - sprawdź nagłowki i daj znać ... -------------------- - Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... - |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 0 Dołączył: 9.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
wyswietla sie SELECT * FROM sprzet WHERE match(nazwa, opis, firma) against('dobry')
a swoja droga fajna sztuczka Przyda sie ![]() mi nie chodzi o wyswietlanie polskich znakow tylko o to zeby przy sortowaniu np "ł" bylo po "l" a nie po "z" chyba ze to ma jakis zwiazek Ten post edytował di@blo 24.04.2008, 18:35:21 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
na pewno w tych polach masz wpis ze słowem dobry
![]() pokaż strukture tej tabeli, tzn. rezultat:
co do drugiego - skoro widzisz, że źle ci sortuje - to znaczy że jakoś to wyświetlasz. to weź w tym okienku "pogląd źródła" i popatrz w nagłówkach HTML jakie jest kodowanie stronki i będziesz wiedział jak kodowane są dane w bazie... a żeby ci pomóc z sortowaniem musze wiedzieć jak są kodowane dane ... -------------------- - Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... - |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 0 Dołączył: 9.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Słowo 'dobry' napewno jest w bazie. jak wyszukuje nazwa LIKE $szuk to ladnie znajduje a po wyszukiwaniu pelnotekstowym juz nie
CREATE TABLE `sprzet` ( `id` int(11) NOT NULL auto_increment, `nazwa` varchar(40) NOT NULL, `kategoria` int(2) NOT NULL default '0', `podkategoria` int(11) default '0', `cena` float(6,2) NOT NULL default '0.00', `kolor` text, `rozmiar` text, `firma` text, `wypozyczalnia` int(11) NOT NULL default '0', `opis` text, `foto` text, `ilosc` int(3) NOT NULL default '0', `stan` int(3) unsigned zerofill default NULL, KEY `id` (`id`), FULLTEXT KEY `search` (`nazwa`,`opis`,`firma`) ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin2 charset=ISO-8859-2 // Dodaj bbcode. // ~webdicepl |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Kiedyś czytałem na mysql.com, że przy niewielkiej ilości rekordów wyszukiwanie pełnotekstowe nie zwraca oczekiwanych wyników (konkretnie nie zwraca nic). Nie będę teraz tłumaczył dlaczego bo po prostu nie pamiętam, a głupot nie chcę pisać. Nie jestem w stanie teraz podać konrketnego źródła, ale również miałem taki problem jak Ty i szukałem pomocy.
// Edit: http://forumphp.nq.pl/index.php?showtopic=48504 tutaj miałem problem, z krótkimi wyrazami. Nie pamiętam czy w końcu go rozwiązałem czy nie, ale może to będzie przyczyną. 'dobry' ma 5 znaków więc może w tym leży problem. Ten post edytował phpion 24.04.2008, 19:32:13 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 0 Dołączył: 9.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Tez sie nad tym zastanawialem ale przy 12 znakach to samo
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 79 Pomógł: 12 Dołączył: 23.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
Podaj także dane jakie występują w tej bazie.
Słowo dobre nie może być zbyt popularne też by zostało znalezione. Jak i słowo szukane nie może być mniejsze jak 4 znaki(zależnie od ustawień MySQL) -------------------- ![]() |
|
|
![]()
Post
#11
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 0 Dołączył: 9.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
calosc jest dopiero w budowie dlatego narazie jest tylko 1 rekord ktory dodalem dla celow testowych
W polu nazwa mam 'lyzwy' w polu opis 'dobry sprzet do lyzwiarstwa figurowego' a w polu firma nie ma nic zawartosci pozostaych chyba jest nieistotna wiec nie podaje |
|
|
![]()
Post
#13
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
a spróbuj wprowadzić coś do pola `firma` ... nie jestem pewien, ale możliwe, że gdy w indeksie założonym na kilku polach nie ma wszystkich danych, to dany wiersz nie zostaje w ogóle zindeksowany (w normalnych jednopolowych indeksach też nie ma informacji o pustych - NULL - polach)
-------------------- - Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... - |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 174 Pomógł: 42 Dołączył: 22.07.2007 Skąd: /dev/random Ostrzeżenie: (0%) ![]() ![]() |
Słowa w polach z indeksem FULLTEXT są indeksowane jeżeli spełniają minimalną i maksymalną długość oraz nie znajdują się domyślnie na tej liście. Jeżeli z jakiś względów nie pasuje nam domyślna wartość ft_min_word_len lub ft_max_word_len (długość znaków) można dodać do pliku my.ini
Kod [mysqld] ft_min_word_len = 3 ft_max_word_len = 10 Po takich zmianach reset serwera jest konieczny a indeks musi zostać "odświeżony".
Słowa, które są popularne w wierszach zostaną zignorowane nawet jeżeli spełniają wymagane kryteria. Cytat i tak przy okazji co zrobic by przy wyswietlaniu wynikow z bazy wyswietal mi alfabetycznie ale z uwzglednieniem polski znakow bo teraz a mi znaki a;cznie ale znaki polskie sa po "z" Upewnij się, że character_set_database i collation_database za pomocą zapytania
są ustatione odpowiednio na latin2, latin2_general_ci |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 225 Pomógł: 0 Dołączył: 1.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cytat MySQL does not index any words less than or equal to 3 characters in length, nor does it index any words that appear in more than 50% of the rows. This means that if your table contains 2 or less rows, a search on a FULLTEXT index will never return anything. Dodaj jeszcze kilka rekordow i powinno zadziałać ;] Ten post edytował Hacker 27.04.2008, 22:13:22 -------------------- (\.../)This is Bunny
(O.o)Copy Bunny into your signature to help him... (> <)...on his way to world domination |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 03:27 |