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
pawel_
post 4.12.2009, 11:19:22
Post #2





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 12.12.2005

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


Ja używam czegoś takiego ( w sekcji index )
Kod
charset_table =  0..9, a..z, _, A..Z->a..z, U+00C0->a, U+00C1->a, U+00C2->a, U+00C3->a, U+00C4->a, U+00C5->a, U+00C7->c, U+00C8->e, U+00C9->e, U+00CA->e, U+00CB->e, U+00CC->i, U+00CD->i, U+00CE->i, U+00CF->i, U+00D1->n, U+00D2->o, U+00D3->o, U+00D4->o, U+00D5->o, U+00D6->o, U+00D9->u, U+00DA->u, U+00DB->u, U+00DC->u, U+00DD->y, U+00E0->a, U+00E1->a, U+00E2->a, U+00E3->a, U+00E4->a, U+00E5->a, U+00E7->c, U+00E8->e, U+00E9->e, U+00EA->e, U+00EB->e, U+00EC->i, U+00ED->i, U+00EE->i, U+00EF->i, U+00F1->n, U+00F2->o, U+00F3->o, U+00F4->o, U+00F5->o, U+00F6->o, U+00F9->u, U+00FA->u, U+00FB->u, U+00FC->u, U+00FD->y, U+00FF->y, U+0100->a, U+0101->a, U+0102->a, U+0103->a, U+0104->a, U+0105->a, U+0106->c, U+0107->c, U+0108->c, U+0109->c, U+010A->c, U+010B->c, U+010C->c, U+010D->c, U+010E->d, U+010F->d, U+0112->e, U+0113->e, U+0114->e, U+0115->e, U+0116->e, U+0117->e, U+0118->e, U+0119->e, U+011A->e, U+011B->e, U+011C->g, U+011D->g, U+011E->g, U+011F->g, U+0120->g, U+0121->g, U+0122->g, U+0123->g, U+0124->h, U+0125->h, U+0128->i, U+0129->i, U+012A->i, U+012B->i, U+012C->i, U+012D->i, U+012E->i, U+012F->i, U+0130->i, U+0134->j, U+0135->j, U+0136->k, U+0137->k, U+0139->l, U+013A->l, U+013B->l, U+013C->l, U+013D->l, U+013E->l, U+0141->l, U+0142->l, U+0143->n, U+0144->n, U+0145->n, U+0146->n, U+0147->n, U+0148->n, U+014C->o, U+014D->o, U+014E->o, U+014F->o, U+0150->o, U+0151->o, U+0154->r, U+0155->r, U+0156->r, U+0157->r, U+0158->r, U+0159->r, U+015A->s, U+015B->s, U+015C->s, U+015D->s, U+015E->s, U+015F->s, U+0160->s, U+0161->s, U+0162->t, U+0163->t, U+0164->t, U+0165->t, U+0168->u, U+0169->u,U+016A->u, U+016B->u, U+016C->u, U+016D->u, U+016E->u, U+016F->u, U+0170->u, U+0171->u, U+0172->u, U+0173->u, U+0174->w, U+0175->w, U+0176->y, U+0177->y, U+0178->y, U+0179->z, U+017A->z, U+017B->z, U+017C->z, U+01A0->o, U+01A1->o, U+01AF->u, U+01B0->u, U+01CD->a, U+01CE->a, U+01CF->i, U+01D0->i, U+01D1->o, U+01D2->o, U+01D3->u, U+01D4->u, U+01D5->u, U+01D6->u, U+01D7->u, U+01D8->u, U+01D9->u, U+01DA->u, U+01DB->u, U+01DC->u, U+01DE->a, U+01DF->a, U+01E0->a, U+01E1->a, U+01E6->g, U+01E7->g, U+01E8->k, U+01E9->k, U+01EA->o, U+01EB->o, U+01EC->o, U+01ED->o, U+01F0->j, U+01F4->g, U+01F5->g, U+01F8->n, U+01F9->n, U+01FA->a, U+01FB->a, U+0200->a, U+0201->a, U+0202->a, U+0203->a, U+0204->e, U+0205->e, U+0206->e, U+0207->e, U+0208->i, U+0209->i, U+020A->i, U+020B->i, U+020C->o, U+020D->o, U+020E->o, U+020F->o, U+0210->r, U+0211->r, U+0212->r, U+0213->r, U+0214->u, U+0215->u, U+0216->u, U+0217->u, U+0218->s, U+0219->s, U+021A->t, U+021B->t, U+021E->h, U+021F->h, U+0226->a, U+0227->a, U+0228->e, U+0229->e, U+022A->o, U+022B->o, U+022C->o, U+022D->o, U+022E->o, U+022F->o, U+0230->o, U+0231->o, U+0232->y, U+0233->y, U+1E00->a, U+1E01->a, U+1E02->b, U+1E03->b, U+1E04->b, U+1E05->b, U+1E06->b, U+1E07->b, U+1E08->c, U+1E09->c, U+1E0A->d, U+1E0B->d, U+1E0C->d, U+1E0D->d, U+1E0E->d, U+1E0F->d, U+1E10->d, U+1E11->d, U+1E12->d, U+1E13->d, U+1E14->e, U+1E15->e, U+1E16->e, U+1E17->e, U+1E18->e, U+1E19->e, U+1E1A->e, U+1E1B->e, U+1E1C->e, U+1E1D->e, U+1E1E->f, U+1E1F->f, U+1E20->g, U+1E21->g, U+1E22->h, U+1E23->h, U+1E24->h, U+1E25->h, U+1E26->h, U+1E27->h, U+1E28->h, U+1E29->h, U+1E2A->h, U+1E2B->h, U+1E2C->i, U+1E2D->i, U+1E2E->i, U+1E2F->i, U+1E30->k, U+1E31->k, U+1E32->k, U+1E33->k, U+1E34->k, U+1E35->k, U+1E36->l, U+1E37->l, U+1E38->l, U+1E39->l, U+1E3A->l, U+1E3B->l, U+1E3C->l, U+1E3D->l, U+1E3E->m, U+1E3F->m,U+1E40->m, U+1E41->m, U+1E42->m, U+1E43->m, U+1E44->n, U+1E45->n, U+1E46->n, U+1E47->n, U+1E48->n, U+1E49->n, U+1E4A->n, U+1E4B->n, U+1E4C->o, U+1E4D->o, U+1E4E->o, U+1E4F->o, U+1E50->o, U+1E51->o, U+1E52->o, U+1E53->o, U+1E54->p, U+1E55->p, U+1E56->p, U+1E57->p, U+1E58->r, U+1E59->r, U+1E5A->r, U+1E5B->r, U+1E5C->r, U+1E5D->r, U+1E5E->r, U+1E5F->r, U+1E60->s, U+1E61->s, U+1E62->s, U+1E63->s, U+1E64->s, U+1E65->s, U+1E66->s, U+1E67->s, U+1E68->s, U+1E69->s, U+1E6A->t, U+1E6B->t, U+1E6C->t, U+1E6D->t, U+1E6E->t, U+1E6F->t, U+1E70->t, U+1E71->t, U+1E72->u, U+1E73->u, U+1E74->u, U+1E75->u, U+1E76->u, U+1E77->u, U+1E78->u, U+1E79->u, U+1E7A->u, U+1E7B->u, U+1E7C->v, U+1E7D->v, U+1E7E->v, U+1E7F->v, U+1E80->w, U+1E81->w, U+1E82->w, U+1E83->w, U+1E84->w, U+1E85->w, U+1E86->w, U+1E87->w, U+1E88->w, U+1E89->w, U+1E8A->x, U+1E8B->x, U+1E8C->x, U+1E8D->x, U+1E8E->y, U+1E8F->y, U+1E96->h, U+1E97->t, U+1E98->w, U+1E99->y, U+1EA0->a, U+1EA1->a, U+1EA2->a, U+1EA3->a, U+1EA4->a, U+1EA5->a, U+1EA6->a, U+1EA7->a, U+1EA8->a, U+1EA9->a, U+1EAA->a, U+1EAB->a, U+1EAC->a, U+1EAD->a, U+1EAE->a, U+1EAF->a, U+1EB0->a, U+1EB1->a, U+1EB2->a, U+1EB3->a, U+1EB4->a, U+1EB5->a, U+1EB6->a, U+1EB7->a, U+1EB8->e, U+1EB9->e, U+1EBA->e, U+1EBB->e, U+1EBC->e, U+1EBD->e,U+1EBE->e, U+1EBF->e, U+1EC0->e, U+1EC1->e, U+1EC2->e, U+1EC3->e, U+1EC4->e, U+1EC5->e, U+1EC6->e, U+1EC7->e, U+1EC8->i, U+1EC9->i, U+1ECA->i, U+1ECB->i, U+1ECC->o, U+1ECD->o, U+1ECE->o, U+1ECF->o, U+1ED0->o, U+1ED1->o, U+1ED2->o, U+1ED3->o, U+1ED4->o, U+1ED5->o, U+1ED6->o, U+1ED7->o, U+1ED8->o, U+1ED9->o, U+1EDA->o, U+1EDB->o, U+1EDC->o, U+1EDD->o, U+1EDE->o, U+1EDF->o, U+1EE0->o, U+1EE1->o, U+1EE2->o, U+1EE3->o, U+1EE4->u, U+1EE5->u, U+1EE6->u, U+1EE7->u, U+1EE8->u, U+1EE9->u, U+1EEA->u, U+1EEB->u, U+1EEC->u, U+1EED->u, U+1EEE->u, U+1EEF->u, U+1EF0->u, U+1EF1->u, U+1EF2->y, U+1EF3->y, U+1EF4->y, U+1EF5->y, U+1EF6->y, U+1EF7->y, U+1EF8->y, U+1EF9->y
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: 26.04.2024 - 16:32