Budowanie wyszukiwarki - po raz kolejny

Budowanie wyszukiwarki - po raz kolejny
madmike
  • Rejestracja: dni
  • Ostatnio: dni
2

To co mi sie rzuciło na pierwszy rzut oka to brak sortowania wyników po dacie: wpisując proste webbrowser dostałem 851 postów jako wynik, gdzie na pierwszym miejscu był post z 2004 roku (najnowszy w znalezionych jest z 2012). Przydałoby się chyba również możliwość posortowania tych wyników wg ocen postów skoro są one wyświetlane i ilości postów w danym wątku (ilość postów jest jednak pewnym wskaźnikiem tego jak na ten temat odpowiadano)

madmike
  • Rejestracja: dni
  • Ostatnio: dni
0

Hmmm,

wpisałem autora postu: madmike
zaznaczyłem Tylko wątki, których autor jest założycielem

i znalazł mi wszystkie wątki, w których brałem udział, a nie te które rozpocząłem...

madmike
  • Rejestracja: dni
  • Ostatnio: dni
0

Wpisanie kombinacji w stylu Adam * - chodzi o tą gwiazdkę - daje wszystko co się da w wynikach pogrubione:
pogrubienie.png

Rozumiem, że gwiazdka to jest all, ale bez przesady ;)

to pogrubienie wyłazi, kiedy chcę np. znaleźć wszystkie wątki z jakimś tagiem, wpisanie samego tagu np. python czy zaznaczenie w checkbox'ach szukaj w tagach nic nie wyszukuje - dopiero wpisanie czegoś tam w pole "wszystkie słowa" zaczyna wyszukiwanie - czyli jeśli chcę znaleźć wszystkie z tagiem python muszę użyć gwiazdki - a to daje wszystkie wyniki pogrubione...


Ogólnie wyszukiwarka pomijając drobiazgi na duży plus :P

Adam Boduch
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 11950
0

@madmike: domyslnie, posty sa sortowane wedlug trafnosci wyszukiwania. Jest to dosc zaawansowany algorytm, ktory sprawdza, czestotliwosc wystepowania szukanych slow, ich bliskosc siebie, a przede wszystkim, ich wystepowanie w poszczegolnych polach (czyli wystapienie slowa w tytule watku jest np. wazniejsze niz w komentarzu - mozna tym sterowac w formularzu wyszukiwania zaawansowanego). Niemniej jednak dodalem sortowanie po dacie napisania.

Udostepnilem mozliwosc wyswietlenia postow, ktore zawieraja dany tag, czyli nie trzeba podawac slow kluczowych. A operator * mozna stosowac, aby wyszukac rozne odmiany slowa, czyli wpisujac adam* znajdzie posty zawierajace adam, adama, adamowego itp ;)

madmike
  • Rejestracja: dni
  • Ostatnio: dni
0
Adam Boduch napisał(a)

@madmike: domyslnie, posty sa sortowane wedlug trafnosci wyszukiwania. Jest to dosc zaawansowany algorytm, ktory sprawdza...

Ja sobie doskonale zdaję z tego sprawę, ale to tylko algorytm - w przypadku webbrowsera znalazł mi na pierwszym miejscu najmniej przydatny post ;)

Nie mam w żadnym razie na myśli, że to jest źle, tylko że możliwość sortowania wyników po innych parametrach czasem może dać lepsze wyniki:

  • po ocenach - no cóż, oceny powinny same za siebie mówić
  • po 'ptaszka' - problem rozwiązany, więc w tych wynikach przeglądam
  • po dacie - jakby nie było, to dzisiejsza aktywność na forum jest jednak kilka razy większa niż kiedyś, więc znalezienie rozwiązania w tych będzie bardziej prawdopodobne
  • po ilości postów - no cóż, im więcej postów, tym większa szansa na znalezienie rozwiązania

To nie jakiś bajer, ale po prostu możliwość 'naprostowania' algorytmu...

Teraz tak... 90% wyszukiwania na forum będzie z pola szukaj bez zaglądania nawet do "szukania zaawansowanego" - więc może możliwość sortowania wyników mogłaby być bardziej dostępna - coś w rodzaju tego co mamy na forum? czyli kliknięcie na kolumnie? albo jakieś combo widoczne nad wynikami?

Ja wiem, czepiam się :P

Adam Boduch
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 11950
0

Poki co nie ma mozliwosci sortowania po ilosci postow, ilosci ocen poniewaz te dane nie sa przechowywane w indeksie solr :(

Zgadzam sie, ze wyszukiwanie zaawansowane to bedzie tylko 10% ogolu wyszukiwan. Postaram sie uwzglednic w procesie sortowania wynikow, rowniez inne parametry, oprocz samej trafnosci.

madmike
  • Rejestracja: dni
  • Ostatnio: dni
2

I oczywiście znowu się czepiam... ;) W tej chwili formularz wyszukiwania zaawansowanego zrobił się strasznie rozwlekły i wymaga przewijania. Może dałoby się podzielić tę stronę na dwie kolumny

po lewej - zawierająca pola do wpisywania pola tekstowe
po prawej - od kategorii po sam dół

nawet kosztem zmiejszenia pól, czy też łamania opisów pod polami...

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
Adam Boduch
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 11950
0

Domyslnie zwraca wyniki, ktore zawieraja wszystkie szukane slowa. A wyniki, czyli posty, sa pogrupowane wg. ID watku.

adf88
  • Rejestracja: dni
  • Ostatnio: dni
1

A co z wyszukiwaniem całych wątków (a nie tylko konkretnych postów)? Jest szansa na taki mechanizm?

Adam Boduch
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 11950
0

Hmm nie bardzo rozumiem, co masz na mysli.

adf88
  • Rejestracja: dni
  • Ostatnio: dni
0

Chodzi mi wyszukiwanie per wątek, nie per post. Czyli np. wpisujemy szukane słowa, wybieramy tryb "wątki" i w wynikach pojawia się lista wątków zawierających dane słowa.

//EDIT
Chodzi o to aby zignorować podział na posty i traktować wątki jako jeden element.

Adam Boduch
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 11950
0

Obecny system wyszukiwania nie rozni sie za wiele od poprzedniego, tzn. idea pozostala taka sama. Wyszukiwarka szuka w tresci postow, w tytule, tagach, komentarzach itp. Zmienil sie jedynie sposob prezentacji wynikow wyszukiwania. Obecnie bowiem wyswietlane sa fragmenty postow zawierajacych szukane slowo kluczowe, a poprzednio wyswietlany byl jedynie tytul danego watku.

adf88
  • Rejestracja: dni
  • Ostatnio: dni
1

Brakuje mi właśnie wyszukiwania per cały wątek.

Obecnie jest trochę ... dziwnie. Dla przykładu jeśli wyszukujemy kilka słów (w trybie "wszystkie słowa") to silnik wyszukuje wątki, które zawierają post, w którym występują wszystkie słowa. Zasada jest takim jakby miksem wyszukiwania postów i wyszukiwania wątków:

  • jeśli słowa są w tym samym wątku, ale rozstrzelone po różnych postach to nie dostaniemy wyniku
  • jeśli zestaw słów powtarzają się w różnych postach to dostaniemy tylko jeden wynik

Wydaje mi się, że należałoby wyodrębnić dwie metody wyszukiwani - jedna względem postów, druga względem wątków.
Wątki:

  • ignorujemy podział na posty
  • jeśli słowa są w tym samym wątku, ale rozstrzelone po różnych postach to wątek pojawi się w wynikach
  • jeśli zestaw słów powtarzają się w różnych postach to w wyniku otrzymujemy tylko jeden wątek
  • w tym trybie wystarczyłoby wyświetlanie samych tematów, bez treści
    Posty:
  • ignorujemy przynależność postów do wątków
  • jeśli słowa są w tym samym wątku, ale rozstrzelone po różnych postach to nie dostaniemy wyniku
  • jeśli zestaw słów powtarzają się w różnych postach to w wyniku otrzymujemy wszystkie takie posty mimo iż są w tym samym wątku
  • tutaj sensowne jest wyświetlanie treści
Adam Boduch
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 11950
1

Nadal nie rozumiesz, ze wczesniej bylo tak samo :) Od tego, co jest teraz, wystarczy odjac podglad posta i otrzymamy rezultat taki jaki byl poprzednio. Nie bylo i nie ma "wyszukiwania per watek". Poprzednio, tak jak i teraz wyszukiwanie odbywalo sie bardzo podobnie, z tym, ze nie bylo podgladu danej wiadomosci.

Aby lepiej to wyjasnic zaprezentuje, napisze jak dane trzymane sa w indeksie wyszukiwarki. Kazdy post to rekord na ktory sklada sie:

  • temat, czyli tytul watku do ktorego przynalezy dany post
  • tresc posta
  • autor posta
  • komentarze przypisane do posta

(pomijam tutaj pozostale, nieistotne w tym momencie pola)

W formularzu wyszukiwania zaawansowanego, mozesz okreslic po jakich polach ma sie odbyc wyszukiwanie (tytul, tresc, komentarze, tag) oraz jaki priorytet ma miec wystapienie danego slowa, w okreslonym polu. Jezeli wiec wpisalbys w wyszukiwarce budowanie wyszukiwarki Solr (bo taki silnik wyszukiwania stosujemy) zwroci 40 rekordow (postow) poniewaz te slowa kluczowe wystepuja w tytulach 40 postow. Tym sposobem, wyswietlonych zostaloby az 40 wynikow (postow) nalezacych do tego samego watku. Stad postanowilem grupowac te wyniki do jednego rekordu.

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0
Adam Boduch napisał(a)

Domyslnie zwraca wyniki, ktore zawieraja wszystkie szukane slowa. A wyniki, czyli posty, sa pogrupowane wg. ID watku.

Wpisałem "więzienie za kradzież filmów z internetu" - czyli dokładny tytuł pewnego wątku.
Wyszukiwarka znalazła jeden post, w którym jedynym słowem z szukanej frazy jest "kradzież". I naprawdę nie rozumiem dlaczego...

Z kolei, jeśli wybiorę opcję wyszukiwania dokładnie tego wyrażenia lub tylko w tytułach, to w wynikach pojawi się ten post: http://4programmers.net/Forum/Flame/182084-wiezienie_za_kradziez_filmow_z_internetu?p=766037#id766037

Dla mnie sprawia to wrażenie zachowania całkowicie losowego.

Adam Boduch
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 11950
0

Juz wyjasniam. Zaden post na forum, w tresci posta nie ma wszystkich slow ktore chcesz znalezc, czyli zarowno więzienie, kradzież, internetu. Natomiast te slowa wystepuja w tytyule ponad 100 postow, zgadza sie? Ale wszystkie te posty przynaleza do jednego watku. Stad Solr pogrupowal owe posty i wyswietlil tresc postu, ktory najbardziej wedlug niego - jest trafny. Domyslam sie, ze chodzi tutaj o wystapienie slowa kradzież na samym poczatku posta.

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

Hmm... Niezbyt to używalne.
Zacznijmy może od początku - wyszukiwarka powinna mieć dwa tryby wyświetlenia wyników - jako posty i jako wątki.

Adam Boduch
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 11950
1

Moze zacznijmy od konca :D Bo to raczej nie zostanie zmienione w najblizszym czasie, zalozenie poczatkowe bylo takie aby tryb wyswietlania byl w postaci postow.

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

Czyli nasza wyszukiwarka nadal będzie inna niż te na wszystkich innych forach?

Adam Boduch
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 11950
2

No w takim razie chyba tak.
Przed zmiana wyszukiwarki, byla dyskusja na temat jej ksztaltu. Trzeba bylo wowczas to zaproponowac, teraz juz jest po grzybach (jezeli chodzi o tak spora zmiane).

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

[rotfl]

Proponować tak logiczną i podstawową rzecz? Nie wpadłbym nigdy, że można tego nie zrobić.

madmike
  • Rejestracja: dni
  • Ostatnio: dni
3
somekind napisał(a)

Czyli nasza wyszukiwarka nadal będzie inna niż te na wszystkich innych forach?
Nasze forum jest wybitnie odmnienne od innych, więc czemu wyszukiwarka ma być podobna... :]

Mi się podoba, oczywiście z tymi uwagami, które wypisałem ;)

Adam Boduch
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 11950
0
somekind napisał(a)

[rotfl]

Proponować tak logiczną i podstawową rzecz? Nie wpadłbym nigdy, że można tego nie zrobić.

Oj, nie kazdy jest taki bystry jak ty.

adf88
  • Rejestracja: dni
  • Ostatnio: dni
1

Tak, wiem już Adamie, że jest tak jak było.

Czasami jest tak, że pamiętamy pewne informacje o wątku, który chcemy znaleźć (padające słowa, użytkownicy, którzy się w nim udzielali itp.). Ale za cholerę nie możemy tego wątku znaleźć bo informacje te są w różnych postach. Uproszczanie zapytania nie pomaga bo wyszukiwanie staje się zbyt ogólne i dostajemy za wiele wyników.

Może kiedyś będzie kolejna przebudowa wyszukiwarki więc zostawiam sugestię na później ;)

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
1
Adam Boduch napisał(a)

Oj, nie kazdy jest taki bystry jak ty.

To nie jest kwestia bystrości, lecz pewnych konwencji wynikających z używalności. Z tej samej przyczyny np. przycisk "zaloguj" umieszcza się w prawym, górnym rogu strony, a nie na jej środku. A argumentacja, że "nasze forum jest odmienne, więc wyszukiwarka też musi", jest naprawdę bardzo poważna i rozsądna.
Brak wyszukiwania po wątkach może nie jest może jakąś super wadą, ale jest co najmniej dziwny.

Mam nadzieję, że da się coś zrobić, aby wyszukiwarka była mniejsza, np. tak:

user image

I przydałby się gdzieś u góry strony bezpośredni przycisk do wyszukiwarki zaawansowanej, żeby nie trzeba było iść dookoła tak jak teraz.

EDIT
Chciałbym wyszukać wszystkie posty z kategorii Coyote, w których występuje słowo "załączniki".
Wchodzę na: http://4programmers.net/Forum/Szukaj, wpisuję "załączniki" w pole "wszystkie słowa:", wybieram kategorię "Coyote", wciskam "Szukaj" i otrzymuję wynik: "0 postów dla "za łą czniki"".
Url wygląda tak: http://4programmers.net/Forum/Szukaj?q=&qaa=za%C5%82%C4%85czniki&qf=&qa=&qn=&tag=&user=&in[]=subject&in[]=text&in[]=comment&f[]=11&boost[subject]=10.0&boost[text]=5.0&boost[tag]=1.0&boost[comment]=0.8&sort=score&order=desc

Czemu tak sobie śmiesznie sylabizuje i nie może nic znaleźć?

aurel
  • Rejestracja: dni
  • Ostatnio: dni
1

Juz wyjasniam. Zaden post na forum, w tresci posta nie ma wszystkich slow ktore chcesz znalezc, czyli zarowno więzienie, kradzież, internetu. Natomiast te slowa wystepuja w tytyule ponad 100 postow, zgadza sie? Ale wszystkie te posty przynaleza do jednego watku. Stad Solr pogrupowal owe posty i wyswietlil tresc postu, ktory najbardziej wedlug niego - jest trafny. Domyslam sie, ze chodzi tutaj o wystapienie slowa kradzież na samym poczatku posta.

Czy nie uważasz, że bardziej trafny w tym wypadku byłby pierwszy post o takim tytule? Jeśli jest 100 postów o tym samym tytule, a wszystkie słowa kluczowe znajdują się w tytule, a nie znajdują się w żadnym z postów... wg mnie jest to jasny sygnał, że ktoś szuka wątku, a nie postu. W tej sytuacji pierwszy post o danym tytule zdecydowanie powinien mieć większą wagę, niż dowolny inny post, nie zawierający w treści tych wszystkich słów kluczowych.

Gorzej, gdy słowa kluczowe występują zarówno w temacie wątku, jak i w jakimś z postów w tym wątku. W tej sytuacji spodziewałabym się dwóch trafień - jednego do pierwszego posta z wątku, a drugiego do tego bardzo pasującego posta z wątku.

Marooned
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
0
  1. przesunięcie wyników
  2. brak filtrowania po działach
    4p-search.png
Demonical Monk
  • Rejestracja: dni
  • Ostatnio: dni
2

Solr injection tutaj: http://4programmers.net/Forum/Szukaj?q=&qaa=&qf=&qa=&qn=&tag=&user=-123&ip=&in[]=subject&in[]=text&in[]=comment&boost[subject]=10.0&boost[text]=5.0&boost[tag]=1.0&boost[comment]=0.8&sort=score&order=desc

Próba wyszukania postów użytkownika -123 kończy się błędem, bo Coyote (od dawna, eh) nie escapuje odpowiednio zapytań. Ten minus po prostu injectuje się w zapytanie.
Zgodnie z tym: http://wiki.apache.org/solr/SolrQuerySyntax wszystkie znaki, które mogą wpłynąć na zapytanie powinny być w formie url-encode.

Adam Boduch
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 11950
0

Powinno byc ok.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.