Pokaż wyniki 1 do 9 z 9

Temat: Wyszukiwarka

  1. #1
    Zarejestrowany
    Nov 2009
    Postów
    643

    Domyślnie Wyszukiwarka

    Witam

    Chcę stworzyć wyszukiwarkę na mojej stronie.
    Wiem że istnieją takie wynalazki jak np. 'Apache Solr' czy 'sphinx'
    ufam że sotosują one rozwiązania których implementację warto rozważyć w moim projekcie..

    Na początku wytłumaczę na jakich danych pracuje.
    Są to ciągi od 3 do 255 znaków utf-8, w dowolnym języku świata (tzn w językach ktore daje się kodować w utf8)

    Weźmy sobie za przykład następujący ciąg znaków:
    The.Sims.3.Generations-RELOADED Final

    Mój pomysł polega na tym, aby podzielić ten ciąg na "wyrazy",
    dla uproszczenia, powiedzmy że separatorami wyrazów są spacje i kropki.
    Po takim przetworzeniu, lista wyrazów wygląda następująco:
    "the", "sims", "3", "generations", "reloaded", "final"
    jak widać po drodze przekonwertowałem na małe litery...

    Mój pomysł polega z grubsza na tym, aby baza danych zawierała relację "wyraz" -> "lista identyfikatorów"
    przez co po wpisaniu w wyszukiwarke "sims", zostaną w wynikach przedstawione wszystkie pozcyje zawierające słowo "sims".
    Niestety, to za mało...

    Co jeśli wpiszę "3", czy na prawdę chcę aby w wynikach wyszukiwania pojawiały się "sims'y"?
    Co jeśli wpiszę "Sims 2", z tego co widzę thepiratebay ma problem właśnie z takimi zapytaniami,
    po wpisaniu "Sims 2" ich wyszukiwarka wyrzuca dużą ilość "Sims 3", a szukane "sims 2" są daleko w wynikach.
    Nie chce żeby moja wyszukiwarka zachowywałą się w podobny sposób, szukam więc rozwiązania problemu...

    Pierwsze z nich to dodatkowe indeksowanie dla "par wyrazów", czyli do wyżej wyliczonych "słów" doszły by następujące:
    "the sims", "sims 3", "3 generations", "generations reloaded", "reloaded final"
    Wygląda dość sensownie, teraz jeśli ktoś wpisze w wyszukiwarke "sims 3", dopasowanie będzie idealnie...

    Rozważmy kolejny przykład:
    "Fahrenheit 9/11 [2004](Double audio:ita-eng)"
    Początkowo znak ukośnika traktowałem jako separator, niestety (a może na szczęście) powyższy przykład skłonił mnie do rewizji stanowiska..
    Jeśli potraktować "9/11" jako wyraz, to tworzenie wyrazów przez łączenie w pary stojących obok siebie słów zdaje egzamin celująco..

    Ostatni pomysł to tworzenie wyrazów z trzech stojących obok siebie słów..

    Czy ktos ma pomysły jak rozwinąć moją koncepcję?
    Dodam że nie chce korzystać z żadnych płatnych rozwiązań, do dyspozycji jest baza danych SQLite i PHP
    światło mądrości oświetla drogę z nikąd do nikąd

  2. #2
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Regexy...

    1. Dzielisz search na znaku bialym (spacja, tabulacja, itd)
    2. Domyslnie kazde slowo podane jako kryteria musi wystapic wiec jak dasz aby szukalo: sims 3 ---> to oba "slowa" musza wystapic
    3. Szukasz w bazie tego co pasuje do '%sims%' i masz pierwsza runde wynikow
    4. Na wynikach z #3 szukasz '%3%' - te ktore nie maja cyfry 3 w polu, wywalasz z listy wynikow... itd
    5. Jesli jestes bardziej liberalny to szukasz nie na zasadzie AND tylko OR... wiec w #3 szukasz dla kazdego slowa i laczysz listy a w punkcie #4 podnosisz na szczyt listy te ktore maja oba slowa (sortowanie wg ilsoci trafien)
    6. Jesli slowo zaczyna sie od minusa, to znaczy ze wywalasz wszystkie wyniki z #3 ktore maja to slowo
    7. To samo dotyczy fraz, wiec jesli masz -"costam innego" to wiesz ze wywalasz '%costam innego%' itd.

    Ma sens? Ja bym to tak zrealizowal - kwestia tylko jak bardzo szczegolowy/upierdliwy chcesz byc definiujac logike a wiec zachowanie wyszukiwarki.
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  3. #3
    Zarejestrowany
    Nov 2009
    Postów
    643

    Domyślnie

    Mówisz o zapytaniach LIKE...
    Baza ma mieć docelowo 100 milionów wpisów...
    Ile czasu zajmie opisywanie przez Ciebie przeszukanie, jeśli silnikiem jest SQLite?
    500 lat?
    światło mądrości oświetla drogę z nikąd do nikąd

  4. #4
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    W takim razie zle podchodzisz do tematu jesli w ogole chcesz uzywac do tego bazy... albo zrob tak aby baza sie skalowala.
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  5. #5
    Zarejestrowany
    Nov 2009
    Postów
    643

    Domyślnie

    Nie wiem jak inaczej podejść do tematu.
    światło mądrości oświetla drogę z nikąd do nikąd

  6. #6
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Sorry ale chwilami rece opadaja...
    W takim razie google: how a search engines works

    ...reszta zalezy juz tylko od Ciebie
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  7. #7
    Zarejestrowany
    Nov 2009
    Postów
    643

    Domyślnie

    Cytat Napisał TQM Zobacz post
    Sorry ale chwilami rece opadaja...
    Kończą się argumenty, zaczyna się chamstwo.

    Cytat Napisał TQM Zobacz post
    W takim razie google: how a search engines works
    Działa na zasadzie indeksów i cachu, coś podobnego chce zrobić u siebie.

    Wszystko co potrafisz podsunąć, to LIKE i full-text-search plus nadzieja że baza danych w jakiś magiczny sposób odwali robote w ułamkach sekund.
    światło mądrości oświetla drogę z nikąd do nikąd

  8. #8
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Cytat Napisał lame Zobacz post
    Kończą się argumenty, zaczyna się chamstwo.
    Blad... po prostu rece opadaja bo widac ze nie sprawdziles ogolnie dostepnych zrodel - modele dzialania roznych wyszukiwarek sa opisane, wystarczy poszukac chwile.
    Co prawda nie ma gotowych kodow (bo to tajemnica operatora wyszukiwarki) ale ogolne zasady dzialania sa opisane, wiec prosze nie wytykaj chamstwa tylko zacznij czytac.

    Cytat Napisał lame Zobacz post
    Działa na zasadzie indeksów i cachu, coś podobnego chce zrobić u siebie.

    Wszystko co potrafisz podsunąć, to LIKE i full-text-search plus nadzieja że baza danych w jakiś magiczny sposób odwali robote w ułamkach sekund.
    Przynajmniej potrafie 'cos' zaproponowac, pomimo tego ze nie jest to nic czym zajmowalbym albo interesowal sie chocby w najmniejszym stopniu...

    Czy oczekiwales ze dostaniesz gotowe rozwiazanie? Nie podales ani jak duza bedzie Twoja baza wiedzy ani nic innego - pytales o to jak to mozna zrealizowac, odpowiedz dostales. Nie pasuje do Twojego zastosowania - sorry, sam rusz glowa i wymysl cos lepszego, co bedzie pasowalo.

    Jesli wiec chamstwem jest udzielenie odpowiedzi na Twoje pytanie to mozesz byc pewien ze wiecej juz tak chamski w stosunku do Ciebie nie bede.

    EOT
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  9. #9
    Zarejestrowany
    Nov 2009
    Postów
    643

    Domyślnie

    Cytat Napisał TQM Zobacz post
    nie jest to nic czym zajmowalbym albo interesowal sie chocby w najmniejszym stopniu...
    Skoro nie wiesz, to po co trolujesz?
    światło mądrości oświetla drogę z nikąd do nikąd

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52