Zobacz temat
Mechanizm wyszukiwania w MySQL
|
|
m_i_n |
Dodany dnia 22.05.2007 19:19:46
|
![]() Bywalec ![]() Postów: 837 Pomógł: 3 Data rejestracji: 15.02.2006 10:04 |
Czy ktos sie orientuje jak dziala wyszukiwanie w MySQL? Zaluzmy ze szukamy po jakims polu tekstowym. Jak to jest realizowane? chyba sprawdzanie kazdego po kolei nie wchodzi w rachube. Tak samo jak na glownej stronie mamy ost. aktywne tematy, tam nastepouje wyszukiwanie po dacie (wlasciwie sortowanie), watpie aby byly po kolei wszystkie rekordy sprawdzane bo trwalo by to wieki. Orientuje sie ktos w tej kwesti? konkretnie o algorytm mi chodzi. //Przenosz? - jantom Edytowane przez jantom dnia 22.05.2007 19:22:05 Awaria strony? - dowiedz si? o niej, nim ktokolwiek zauwa?y: uMonitor.eu
|
|
|
W?cibski Go?? |
Dodany dnia 23.10.2025 23:23:42
|
Pan Kontekstualny Postów: n^x Data rejestracji: Zawsze |
![]() |
IP: localhost | |
SebaZ |
Dodany dnia 22.05.2007 21:00:59
|
![]() Zaawansowany ![]() Postów: 1598 Pomógł: 2 Data rejestracji: 10.11.2004 22:39 |
PHP=FUSION = prostota! Nie ma ?adnego algorytmu wyszukanego. Sprawdzana jest data ostatniej aktywno?ci, porównywana z postami i wy?wietlane tematy gdzie zosta? napisany post po ostatniej aktywno?ci. Zadawanie pyta? na forum to nie jest prawo, to jest przywilej, którego ka?dy mo?e by? pozbawiony je?eli nie b?dzie umia? z niego korzysta?. Nie wymagaj wi?c natychmiastowej odpowiedzi.
|
|
|
m_i_n |
Dodany dnia 22.05.2007 21:36:44
|
![]() Bywalec ![]() Postów: 837 Pomógł: 3 Data rejestracji: 15.02.2006 10:04 |
LOL. SebaZ, prosze, nie wypowiadaj sie jesli nie wiesz o czym wogole pisze autor. Co do tego ma fusion? ja pytam o MySQL (na ktorym akurat fusion bazuje)... i nie ma znaczenia czy fusion jest prosty, trudny czy w ciapki... pyt. tyczy sie czegos innego. Awaria strony? - dowiedz si? o niej, nim ktokolwiek zauwa?y: uMonitor.eu
|
|
|
SebaZ |
Dodany dnia 22.05.2007 21:40:00
|
![]() Zaawansowany ![]() Postów: 1598 Pomógł: 2 Data rejestracji: 10.11.2004 22:39 |
A czego? Zapyta?es jak dzia?a wyszukiwanie, np. ost. aktywne tematy. Skoro ?le Ci? zrozumia?em wyra?aj ja?niej swoje my?li nast?pnym razem! Zarzu? jakim? kodem, bo szczerze nie kumam nadal, aby tyle ?e w MySQL Zadawanie pyta? na forum to nie jest prawo, to jest przywilej, którego ka?dy mo?e by? pozbawiony je?eli nie b?dzie umia? z niego korzysta?. Nie wymagaj wi?c natychmiastowej odpowiedzi.
|
|
|
m_i_n |
Dodany dnia 22.05.2007 21:47:36
|
![]() Bywalec ![]() Postów: 837 Pomógł: 3 Data rejestracji: 15.02.2006 10:04 |
Wytlumacze ci najprosciej jak moge: co robi MySQL po wpisaniu np: SELECT * FROM tabelka WHERE pole=wartosc jaki algorytm wyszukuje... na pewno nie jest to zwykle przeszukiwanie, by moze drzewo binarne, nie wiem, pytam sie czy ktos sie orientuje, bo mam pewien problem natury programistycznej z trzymaniem duzej ilosci danych i jestem ciekawy jak to wyglada w takich profesionalnych prodkcjach jak MySQL gdzie, jak widac dziala znakomicie. Awaria strony? - dowiedz si? o niej, nim ktokolwiek zauwa?y: uMonitor.eu
|
|
|
SebaZ |
Dodany dnia 22.05.2007 23:11:02
|
![]() Zaawansowany ![]() Postów: 1598 Pomógł: 2 Data rejestracji: 10.11.2004 22:39 |
A co moze byc innego poza indeksowaniem?
Zadawanie pyta? na forum to nie jest prawo, to jest przywilej, którego ka?dy mo?e by? pozbawiony je?eli nie b?dzie umia? z niego korzysta?. Nie wymagaj wi?c natychmiastowej odpowiedzi.
|
|
|
Wooya |
Dodany dnia 23.05.2007 00:12:04
|
![]() Zaawansowany ![]() Postów: 1449 Pomógł: 22 Data rejestracji: 30.01.2005 15:40 |
Heh. Sprawa natury wyjatkowo skomplikowanej. m_i_n mysle ze powinienes zapoznac sie dokladniej z matrycami, jako ze tabele sa takowymi. Bieganie po polach w poszukiwaniu czegokolwiek jest strata czasu. Bieganie po kolumnach (warunek WHERE) sprowadza do poszukiwan w jednej (ilus) kolumnach/wierszach. Generalnie chodzi o tablice i problem jest naprawde skomplikowany. Mozesz przedstawic w czym problem?
... Pomagam tylko przy najnowszych wersjach PHP-Fusion ... ![]() |
|
|
m_i_n |
Dodany dnia 23.05.2007 00:42:30
|
![]() Bywalec ![]() Postów: 837 Pomógł: 3 Data rejestracji: 15.02.2006 10:04 |
Potrzebuje do swojej aplikacji aby przetrzymywac pewne dane i w nich wyszukiwac, sa to duze ilosci i dlatego mechanizm musi byc wydajny. Z tego co wlasnie rozmawialem z moim znajomym to on twierdzi ze wyglada to mniej wiecej tak ze sa odpowiednie indeksy tworzone na kazda litere na ten przyklad (dla pola tekstu), tak jakby sie tworzylo foldery a,b,c... a w kazdym z nich znow a,b,c... dzieki temu tak szybko to dziala. I to ma sens w gruncie rzeczy, tylko MySQL jakos to wszystko trzyma w calosci a nie tak lamerksko w folderach ![]() ![]() A co moze byc innego poza indeksowaniem? Google + Algorytmy wyszukiwania to zobaczysz co moze byc innego i jak wiele tego jest... Edytowane przez m_i_n dnia 23.05.2007 00:44:43 Awaria strony? - dowiedz si? o niej, nim ktokolwiek zauwa?y: uMonitor.eu
|
|
|
Riklaunim |
Dodany dnia 23.05.2007 00:54:17
|
![]() Pocz?tkuj?cy ![]() Postów: 244 Data rejestracji: 07.08.2004 10:53 |
MySQL dla tabel MyISAM oferuje wyszukiwanie pe?notekstowe (wyszukiwanie z prawdopodobie?stwem), które jest wydajniejsze od wyszukiwania LIKE ![]() |
|
|
![]() |
Dodany dnia 23.05.2007 01:07:29
|
![]() Weteran ![]() Postów: 3101 Pomógł: 29 Data rejestracji: 21.05.2005 22:27 |
Dawno pisa?em u nas i na uk o Fulltext-ale po publikacji szukajki Wooya odpu?ci?em temat. http://www.php-fu...post_90540 |
|
|
Riklaunim |
Dodany dnia 23.05.2007 14:02:25
|
![]() Pocz?tkuj?cy ![]() Postów: 244 Data rejestracji: 07.08.2004 10:53 |
tutaj mam przyk?ad: http://www.php.rk...zukiwanie/ Kwestia zmiany zapyta? SQL. |
|
|
![]() |
Dodany dnia 23.05.2007 15:39:53
|
![]() Weteran ![]() Postów: 3101 Pomógł: 29 Data rejestracji: 21.05.2005 22:27 |
Dobrze mówisz przyk?ad wy??cznie teoretyczny, a sprawd? to sobie np w Fusion ,a mo?e sprawdzi?e? bo nie jest to takie oczywiste i dlatego jeszcze nie ma fusionowej takiej szukajki, w kodzie nie widz? bolean mode, a jak pisa?em o tym to dok?adnie temat przerobi?em z manualem mysqla-i t? ostatni? modyfikacj? uk te? jeszcze nie chodzi to jak powinno teoretycznie. Wi?c nie ma-a je?li to b?dzie jednak w powi?zaniu z like. |
|
|
Riklaunim |
Dodany dnia 23.05.2007 17:15:46
|
![]() Pocz?tkuj?cy ![]() Postów: 244 Data rejestracji: 07.08.2004 10:53 |
Przyk?adowo do wyszukiwania na forum. 1. Wykonaj zapytanie (np. phpMyAdmin, zak?adka SQL) (zak?adamy wyszukiwanie tylko po tre?ci posta 2. search.php, wiersz 171: zamie? na: 3. wiersz 178: zamie? na: Dla odpowiedniej ilo?ci postów powinno by? wida? efekt wyszukiwania pe?notekstowego. |
|
|
![]() |
Dodany dnia 23.05.2007 17:30:35
|
![]() Weteran ![]() Postów: 3101 Pomógł: 29 Data rejestracji: 21.05.2005 22:27 |
Dobrze postawi? nawet nowego fusiona i sprawdz? zasymuluje forum mówimy oczywi?cie o wyszukiwaniu kilku wyrazów i zobaczymy czy nie wyrzuci b??dów i zmiana wyszukiwania inna fraza kilku wyrazów i ponownie i sprawdzenie ilo?ci znalezionych. Je?li tak zadzia?a prawid?owo no problem a co do fulltext klucza to no problem bo mam pe?ne uprawnienia phpmyadmin ?acznie z nadawaniem uprawnie? global-bo sam je ustanawiam albo root serwera i mysgl polecenia. I wszystko na najnowszych 5. Nie chodzi o szybko?? to pó?niej a konkretne frazy zobaczymy? DOPISANE W EDYCJI zapytam na wst?pie SPRAWDZI?E???? -- Struktura tabeli dla `fusion_posts` -- DROP TABLE IF EXISTS `fusion_posts`; CREATE TABLE `fusion_posts` ( `forum_id` smallint(5) unsigned NOT NULL DEFAULT '0', `thread_id` smallint(5) unsigned NOT NULL DEFAULT '0', `post_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, `post_subject` varchar(100) COLLATE utf8_polish_ci NOT NULL DEFAULT '', `post_message` text COLLATE utf8_polish_ci NOT NULL, `post_showsig` tinyint(1) unsigned NOT NULL DEFAULT '0', `post_smileys` tinyint(1) unsigned NOT NULL DEFAULT '1', `post_author` smallint(5) unsigned NOT NULL DEFAULT '0', `post_datestamp` int(10) unsigned NOT NULL DEFAULT '0', `post_ip` varchar(20) COLLATE utf8_polish_ci NOT NULL DEFAULT '0.0.0.0', `post_edituser` smallint(5) unsigned NOT NULL DEFAULT '0', `post_edittime` int(10) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`post_id`), KEY `thread_id` (`thread_id`), FULLTEXT KEY `post_message` (`post_message`) ) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=6 ; TWÓJ KOD $result = dbquery( "SELECT tp.*, tf.* FROM ".$db_prefix."posts tp INNER JOIN ".$db_prefix."forums tf USING(forum_id) WHERE ".groupaccess('forum_access')." AND MATCH(post_message) AGAINST ('".$stext."')" ); $rows = dbrows($result); if ($rows != 0) { echo $rows." ".($rows == 1 ? $locale['414'] : $locale['415']).$locale['422'].":<br><br>\n"; $result = dbquery( "SELECT tp.*, tf.*, tu.user_id,user_name FROM ".$db_prefix."posts tp INNER JOIN ".$db_prefix."forums tf USING(forum_id) INNER JOIN ".$db_prefix."users tu ON tp.post_author=tu.user_id WHERE ".groupaccess('forum_access')." AND MATCH(post_message) AGAINST ('".$stext."') ORDER BY post_datestamp DESC LIMIT $rowstart,10" ); I wynik zapytania-przy 6 postach 1 s?owo dwa nie ma znaczenia a jest w ka?dym(6-wida? w tabeli) 0 Posty na Forum wyników pasuj?cych do kryteriów wyszukiwania. I wydaje mi si? je?li zmiana trybu danych na bolean je?li ma chodzi?. Edytowane przez wlodekp dnia 23.05.2007 18:41:43 |
|
|
Riklaunim |
Dodany dnia 23.05.2007 18:51:44
|
![]() Pocz?tkuj?cy ![]() Postów: 244 Data rejestracji: 07.08.2004 10:53 |
Mi dzia?a jako tako - by MySQL sensownie to szuka?o musi mie? troch? danych (par? rekordów to za ma?o). Wrzu? zrzut swojej strony i przetestuj.
|
|
|
![]() |
Dodany dnia 23.05.2007 19:02:00
|
![]() Weteran ![]() Postów: 3101 Pomógł: 29 Data rejestracji: 21.05.2005 22:27 |
Ilo?? rekordów nie ma znaczenia tylko przy trafno?ci i szybko?ci jeden te? powinien znale??. Nie mam w tej chwili czasu na zabaw? tworzenia bo k?opot polega ?e nie posiadam forum ale przypn? do niusów w nocy i popatrz? skoro twierdzisz ?e dzia?a to te? bym chcia? ?eby u mnie zadzia?a?o BO O TO TYLKO MI CHODZI a jest to niekiepska metoda. Edytowane przez wlodekp dnia 23.05.2007 22:37:21 |
|
Przejdź do forum: |