Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyszukiwarka, projekt
biedak
post 8.05.2011, 18:11:33
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 6.05.2011

Ostrzeżenie: (0%)
-----


Cześć,

chcę zrobić prostą wyszukiwarkę - chodzi o wyświetlanie wyników wraz z kilkunastoma słowami oplatającymi wyszukiwane słowo.
W jaki sposób po wyszukaniu najlepiej pobrać te słowa oplatające wyszukiwaną frazę, tak jak np. w Google.

Myślałem jakoś, że pobiera cały tekst, a potem go jakoś okraja, ale lepiej żeby mysql pobierał tylko ten niewielki fragment, który jest potrzebny.
Go to the top of the page
+Quote Post
Fifi209
post 8.05.2011, 18:14:05
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Mam lodówkę, patelnię, kuchenkę, mogę ugotować rolady z kluskami i kapustą?

Jednym słowem, nie napisałeś nawet gdzie i w jaki sposób przetrzymujesz dane.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
biedak
post 8.05.2011, 18:22:23
Post #3





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 6.05.2011

Ostrzeżenie: (0%)
-----


W mysql. Są pola treść ze dłuższymi tekstami, chce wyciągać fragmenty - tytuł wraz z frazą i otaczającym tekstem.

Ten post edytował biedak 8.05.2011, 18:22:52
Go to the top of the page
+Quote Post
kill15
post 8.05.2011, 20:27:58
Post #4





Grupa: Zarejestrowani
Postów: 184
Pomógł: 14
Dołączył: 21.12.2010

Ostrzeżenie: (0%)
-----


pokaż co już zrobiłeś wgl snitch.gif jakieś próby snitch.gif

Ten post edytował kill15 8.05.2011, 20:30:42
Go to the top of the page
+Quote Post
biedak
post 9.05.2011, 09:40:14
Post #5





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 6.05.2011

Ostrzeżenie: (0%)
-----


  1. $ileNewsow = $this->db->fetch("SELECT count(*) FROM newsy WHERE tresc LIKE '%$this->szukaj%' OR tresc_dl LIKE '%$this->szukaj%'");
  2. if($ileNewsow['0'] > 0)
  3. {
  4. $limit2 = $this->limit();
  5. $limit1 = $limit2 - $this->podzial;
  6.  
  7. $pobierzNewsy = $this->db->fetchAs("SELECT id, tytul FROM newsy WHERE tresc LIKE '%$this->szukaj%' OR tresc_dl LIKE '%$this->szukaj%' ORDER BY id DESC LIMIT ".$limit1.", ".$limit2."");
  8. if($ileNewsow['0']<$this->podzial){
  9. $petla=$ileNewsow['0'];
  10. } else {
  11. $petla = $this->podzial;
  12. }
  13. for ($i=0;$i<$petla;$i++)
  14. {
  15. $pobierzNewsy[$i]['link'] = ogonki($pobierzNewsy[$i]['tytul']);
  16. }
  17. $this->view->assign('dane', $pobierzNewsy);
  18. $this->view->assign('znaleziono', $ileNewsow['0']);
  19. $this->view->display('news.tpl');
  20. $this->nawigacja($this->strona_aktualna,$this->podzial,$ileNewsow['0']);
  21. }


Jak już wspomniałem chodzi mi teraz, żeby oprócz samych linków, był wklejony kawałek tekstu z wyszukiwanym słowem.

Czyli, np: wyszukując Thembu w tekście
Cytat
Mandela jest synem wodza plemienia Thembu. W wieku 7 lat, jako pierwszy w swojej rodzinie zaczął uczęszczać do szkoły. Tam nauczyciel-metodysta nadał mu angielskie imię Nelson. Ukończył studia prawnicze. Jako student uczestniczył w działaniach na rzecz praw politycznych, społecznych i ekonomicznych czarnoskórej większości w RPA. W 1942 roku wstąpił do Afrykańskiego Kongresu Narodowego (ANC), a w 1950 roku zaczął nim kierować. Wikipedia


pojawia się

Cytat
Nelson Mandela
Mandela jest synem wodza plemienia Thembu. W wieku 7 lat, jako pierwszy w swojej rodzinie zaczął...


W jaki sposób pobrać tak skrócony tekst z Mysql lub jak go skrócić po pobraniu w PHP wskazując określone słowo kluczowe?

Ten post edytował biedak 9.05.2011, 09:41:04
Go to the top of the page
+Quote Post
kadlub
post 9.05.2011, 18:18:36
Post #6





Grupa: Zarejestrowani
Postów: 548
Pomógł: 105
Dołączył: 4.06.2010

Ostrzeżenie: (0%)
-----


  1. SELECT SUBSTR(tytul,LOCATE('słowo_klucz',tytul)-10 ,40)AS gotowe FROM newsy

to zapytanie wyświetli ci fragment tekstuz 10 znakami przed słowem kluczowym (które podasz do zapytania) i 40 znakami po słowie kluczowym
jak chcesz inaczej np od 1 znaku w tekście do 40 po wystąpieniu słowa kluczowego to daj
  1. SELECT SUBSTR(tytul,1,LOCATE('słowo_klucz',tytul)+40)AS gotowe FROM newsy

dopasuj sobie według uznania
Go to the top of the page
+Quote Post
biedak
post 10.05.2011, 08:13:21
Post #7





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 6.05.2011

Ostrzeżenie: (0%)
-----


Działa, tylko teraz okazuje się, że mam w dwóch polach tekst, w którym wyszukuję. Muszę ten tekst najpierw połączyć i dopiero potem w nim wyszukać:
Łącze:
  1. SELECT CONCAT(tresc, ' ', tresc_dalsza) AS tekst FROM newsy WHERE ID = $pobierzNewsy[$i]['id']


Próbuje:
  1. SELECT SUBSTR((SELECT CONCAT(tresc, ' ', tresc_dalsza) AS tekst FROM newsy WHERE ID = $pobierzNewsy[$i]['id']),LOCATE('%$this->szukaj%',(SELECT CONCAT(tresc, ' ', tresc_dalsza) AS tekst FROM newsy WHERE ID = $pobierzNewsy[$i]['id']))-15,15) AS gotowe FROM newsy WHERE ID = $pobierzNewsy[$i]['id']


Niby działa, ale chyba jakoś źle. Czy jest inny sposób?

Ten post edytował biedak 10.05.2011, 08:15:05
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2025 - 04:54