Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zasady pisania na forum Pro

Tematy na forum Pro mogą zakładać jedynie moderatorzy. W otwartych tematach może pisać każdy, kto ma coś fachowego do powiedzenia. Wszystkie posty nie wnoszące nic do tematu będą natychmiast usuwane, a ich autorzy dostaną ostrzeżenie.
Jeśli uważasz, że jakiś temat jest warty dyskusji na tym forum, zgłoś go w temacie Propozycje.

> wyszukiwarka, wydajna, z prawdziwego zdarzenia ;)
chmolu
post 4.12.2005, 00:48:17
Post #1





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 8.10.2004

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


Witam,

wiem, że takie tematy już były, ale nie znalazłem w nich żadnych konkretów.

Jak podeszlibyście do problemu zbudowania mechanizmu wyszukiwarki dla systemu, który nierzadko może obsługiwać spore ilości danych (w wielu tabelach)?

Interesuje mnie wszystko na ten temat - linki, artykuły, tutoriale.

Spotkałem się już w kilku aplikacjach z rozwiązaniem, które wyglądało mniej więcej tak:
treść tabeli, np. articles jest dzielona na słowa, np tekst:
Cytat
To jest przykładowa treść artykułu

Zostanie podzielony na tablicę:
  1. <?php
  2. array('jest', 'przykładowa', 'treść', 'artykułu');
  3. ?>

Słowo "to" jest traktowane jako tzw. common word i pomijane.

Te słowa są wrzucane do osobnej tabeli, która ma mniej wiecej taką strukturę:
Kod
word_id
word_text


Do tego jest jeszcze jedna tabela, która łączy artykuł ze słowami:
Kod
article_id
word_id



Rozwiązanie ciekawe, ale zastanawia mnie, jak to jest z jego wydajnością. O ile liczba słów jest ograniczona, to druga tabela może się nieźle rozrosnąć. Pisał już ktoś coś takiego? Jakie są wasze sposoby na problem wyszukiwarki w CMSach?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ulow
post 29.06.2010, 13:57:41
Post #2





Grupa: Zarejestrowani
Postów: 35
Pomógł: 4
Dołączył: 18.05.2010

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


Indekser zapisuje w bazie/pamięci/gdzie chcesz pojedyncze słowa, ich ilość i miejsce występowania na stronie.

Co do popularności wyszukiwania, strona którą podałeś robi to na podstawie 1/2 słów. Można stworzyć tabelę w bazie i przy wyszukiwaniu sprawdzać czy takie słowo już w tej tabeli jest. Jeżeli nie ma: dodajesz je i ustawiasz wartość na 1, jeżeli już jest: zwiększasz ostatnią wartość o 1 i potem listujesz od największej do najmniejszej


--------------------
/dev/ulow
Go to the top of the page
+Quote Post
Wave
post 30.06.2010, 23:13:52
Post #3





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 13.01.2005

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


Cytat(ulow @ 29.06.2010, 14:57:41 ) *
Co do popularności wyszukiwania, strona którą podałeś robi to na podstawie 1/2 słów. Można stworzyć tabelę w bazie i przy wyszukiwaniu sprawdzać czy takie słowo już w tej tabeli jest. Jeżeli nie ma: dodajesz je i ustawiasz wartość na 1, jeżeli już jest: zwiększasz ostatnią wartość o 1 i potem listujesz od największej do najmniejszej

nie brzmi zbyt wydajnie i bezpiecznie dla bazy ale wydaje się jedynym sposobem. Co rozumiesz przez 1/2 słów?
Go to the top of the page
+Quote Post

Posty w temacie
- chmolu   wyszukiwarka   4.12.2005, 00:48:17
- - dtb   http://www.phpsolmag.org/pl/modules/news2/....php?...   4.12.2005, 10:18:37
- - chmolu   Z tego, co pamiętam to rozszerzenie BitSet nie jes...   4.12.2005, 10:36:23
- - bela_666   http://lucene.apache.org/ - Javove ale zawsze możn...   4.12.2005, 10:42:11
|- - kosmowariat   Cytat(bela_666 @ 4.12.2005, 10:42:11 ...   27.02.2009, 10:44:04
- - SongoQ   Wyszukiwanie zalezy od rodzaju bazy, niektore wspo...   4.12.2005, 12:58:23
- - chmolu   Niestety muszę wrócić do tej sprawy. Przez głupi ...   15.01.2006, 11:50:36
- - bela_666   Tsearch2?   15.01.2006, 15:09:04
- - Bora   Cytat(chmolu @ 2005-12-04 00:48:17)Do tego je...   15.01.2006, 16:37:31
- - ActivePlayer   a jak wyliczyc trafność ?   15.01.2006, 19:39:19
|- - Martio   Cytat(ActivePlayer @ 15.01.2006, 20:39...   3.05.2007, 08:30:46
- - chmolu   A jak ma się sprawa z LIKE %cośtam%? Czy jeśli ma...   15.01.2006, 20:16:25
- - SongoQ   LIKE jest zabojczy dla baz   15.01.2006, 22:31:51
- - ergo   ja chyba czegos nie rozumiem , bo o ile mi sie wyd...   3.03.2006, 13:53:54
- - pawkow   Według was należy ograniczać u...   19.03.2007, 16:24:40
- - Sedziwoj   pawkow to rozwiązanie jest kiepskie, ponieważ przy...   26.03.2007, 23:24:19
|- - SHiP   Cytat(Sedziwoj @ 26.03.2007, 22:24:19...   8.05.2007, 19:09:19
|- - Mikz   Cytat(Sedziwoj @ 27.03.2007, 00:24:19...   25.06.2010, 17:03:41
|- - Sedziwoj   Cytat(Mikz @ 25.06.2010, 18:03:41 ) S...   16.06.2011, 09:18:49
- - Turgon   W mojej opinii otagowywać i na ich podstawie szuka...   27.03.2007, 17:32:19
- - zbig   Mysle , ze temat wyszukiwarek jest zbyt wielki zeb...   5.05.2007, 13:55:38
|- - rashid   Cytat(zbig @ 5.05.2007, 14:55:38 ) W ...   10.05.2007, 10:11:48
|- - jupeter   Ja znalazłem dobre rozwiązanie na indekser podgląd...   24.06.2007, 23:43:35
- - Riklaunim   jest też Xapian - http://www.xapian.org/ który ma ...   5.05.2007, 19:32:41
- - AcidBurnt   fajny przykład na PostgreSQL: http://www.depesz....   25.06.2007, 17:52:10
- - rubinek   Sphinx -> http://www.sphinxsearch.com/ -> i ...   27.05.2008, 13:33:38
- - Strzałek   Jednak nie każdy ma możliwość ...   11.10.2008, 15:25:16
- - c3zi   Tak, ktoś używa. Jest bardzo wydajny jeśli chodzi ...   8.11.2008, 12:39:52
- - NuLL   A czy Sphinx potrafi indeksowac kilka tabel z dany...   27.01.2009, 15:54:10
|- - Strzałek   Cytat(NuLL @ 27.01.2009, 15:54:10 ) A...   5.03.2009, 17:54:28
- - rashid   Sphinx indeksuje dane z dowolnego zapytania, wiec ...   31.01.2009, 12:33:57
- - ropsiU   A próbował się ktoś z polską morfologią w sphinxie...   27.11.2009, 11:16:33
- - pawel_   Ja używam czegoś takiego ( w sekcji index ) Kodcha...   4.12.2009, 11:19:22
- - mr__y   Cytat(ropsiU @ 27.11.2009, 12:16:33 )...   27.02.2010, 15:02:16
- - pawel_   Skrypcik: Kod<?php # ten plik ściągamy z htt...   1.03.2010, 12:02:27
- - Wave   Na czym polega wyszukiwanie z użyciem indeksu słów...   29.06.2010, 12:15:30
- - ulow   Indekser zapisuje w bazie/pamięci/gdzie chcesz poj...   29.06.2010, 13:57:41
|- - Wave   Cytat(ulow @ 29.06.2010, 14:57:41 ) C...   30.06.2010, 23:13:52
- - ulow   chodziło o "na podstawie jednego do dwóch słó...   3.07.2010, 09:22:33
- - gothye   podobne rozwiązanie wykorzystane jest w silniku fo...   17.01.2011, 12:12:29
- - mankowski   Witam, A ma ktos moze jakis tutorial do sphinxa, n...   27.06.2011, 12:10:28
- - Ormin   Taka jeszcze krotka piłka - Sphinx czy Lucene i dl...   28.06.2011, 14:17:06
- - Hellz   http://webhosting.pl/Sphinx.zbuduj.wlasna.wyszukiw...   29.06.2011, 18:21:58
- - darko   Polecam Apache Solr oparty o Lucene. Łatwe, szybki...   30.06.2011, 18:20:16
- - mrWodoo   Ja zadam inne (banalne) pytanie. Na czym polega wy...   31.03.2012, 14:51:13
- - marcio   Czy nie chodzi ci o cos takiego: http://www.beldzi...   31.03.2012, 20:03:13
- - mrWodoo   Nie, nie chodziło mi o podpowiedzi, tylko jak się ...   31.03.2012, 20:25:28
- - marcio   Cytat(mrWodoo @ 31.03.2012, 21:25:28 ...   31.03.2012, 21:59:48


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: 31.10.2024 - 23:53