ForumCała strona

Nawigacja

Aktualnie online

Gości online: 5

Użytkowników online: 0

Łącznie użytkowników: 25,405
Najnowszy użytkownik: kipolas

Logowanie

Nazwa użytkownika

Hasło



Zarejestruj się

Odzyskaj hasło

Shoutbox

Musisz zalogować się, aby móc dodać wiadomość.

Zbigniew@
18.10.2025 19:31:20
Forum nie dziala nawet bez polskich znakow.

JazOOn
16.10.2025 18:21:12
nie dziala z polskimi znakami

Zbigniew@
12.10.2025 15:20:31
Tylko dla wybranych.

JazOOn
06.10.2025 21:00:15
czy shout dziala?

hoopak
02.10.2025 10:33:17
Bleeeeee Cool

Pobierz now? wersj?
Pobierz podr?cznik
Zobacz inne oficjalne Supporty
Statystyki supportu
PHP-Fuson PL na Facebooku

RSS

Polecamy hosting SferaHost.pl

Zobacz temat

 Drukuj temat
Mechanizm wyszukiwania w MySQL
m_i_n
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
 
http://www.bbproject.net
W?cibski Go??
Dodany dnia 23.10.2025 23:23:42
Pan Kontekstualny

Postów: n^x
Data rejestracji: Zawsze

Polecamy hosting SferaHost.pl
IP: localhost  
SebaZ
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
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
 
http://www.bbproject.net
SebaZ
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
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
 
http://www.bbproject.net
SebaZ
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
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 ...
koder_1.png
 
m_i_n
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 Wink wiadomo. Ale chyba finalnie wezme i podepne sie swoja aplikacja pod baze MySQL, bo nie ma sensu odkrywac na nowo czegos co juz jest Smile

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
 
http://www.bbproject.net
Riklaunim
MySQL dla tabel MyISAM oferuje wyszukiwanie pe?notekstowe (wyszukiwanie z prawdopodobie?stwem), które jest wydajniejsze od wyszukiwania LIKE Wink Jest to rozwi?zanie wydajne, a je?eli potrzebujemy co? jeszcze wydajniejszego to np. Xapian z API dla PHP.
 
http://www.cms.rk.edu.pl
Spoczywaj w pokoju... wlodekp
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
 
wlodekp.europa.pl
Riklaunim
tutaj mam przyk?ad: http://www.php.rk...zukiwanie/
Kwestia zmiany zapyta? SQL.
 
http://www.cms.rk.edu.pl
Spoczywaj w pokoju... wlodekp
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.
 
wlodekp.europa.pl
Riklaunim
Przyk?adowo do wyszukiwania na forum.

1. Wykonaj zapytanie (np. phpMyAdmin, zak?adka SQL)
Pobierz kod źródłowy  Rozwiń Kod źródłowy
(zak?adamy wyszukiwanie tylko po tre?ci posta

2. search.php, wiersz 171:
Pobierz kod źródłowy  Rozwiń Kod źródłowy


zamie? na:
Pobierz kod źródłowy  Rozwiń Kod źródłowy


3. wiersz 178:
Pobierz kod źródłowy  Rozwiń Kod źródłowy


zamie? na:
Pobierz kod źródłowy  Rozwiń Kod źródłowy


Dla odpowiedniej ilo?ci postów powinno by? wida? efekt wyszukiwania pe?notekstowego.
 
http://www.cms.rk.edu.pl
Spoczywaj w pokoju... wlodekp
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
 
wlodekp.europa.pl
Riklaunim
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.
 
http://www.cms.rk.edu.pl
Spoczywaj w pokoju... wlodekp
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
 
wlodekp.europa.pl
Przejdź do forum:
Created by Arox Copyright (C) 2004
Copyright (C) 2004 - 2018 Ekipa PHP-Fusion.pl