![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 439 Pomógł: 0 Dołączył: 3.06.2010 Ostrzeżenie: (50%) ![]() ![]() |
Mam takie zapytanie sql
Chciałbym wyświetlać rekordy posortowane po ilości wystąpień słowa "test" a dzieje się coś takiego, jeśli mam przykładowo trzy wpisy test test test test test test to wynikiem jest mimo że mam ustawione sortowanie malejące, o co chodzi? test test test test test test a chciałbym wyświetlać to malejącą w zależności od ilości słów "test" w tekście |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Niestety do tego celu nie możesz użyc FULLTEXT-a
Musisz ręcznie policzyć ilość słów w tekście i po tym sortować. Dodatkowo bardzo dokładnie zapoznaj się z metodą działania FULLTEXT w MySql bo niekoniecznie musi działać tak jak chcesz. Jeżeli twoje przykładowe dane są rzeczywistymi rekordami to FULLTEXT się nie nada. http://www.mwasif.com/2008/12/count-number...a-mysql-column/ Ten post edytował wookieb 12.09.2010, 19:35:20 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 439 Pomógł: 0 Dołączył: 3.06.2010 Ostrzeżenie: (50%) ![]() ![]() |
a jak to najlepiej zrobić, masz może jakiś wydajny algorytm zliczania słów?
Czy może lepiej przy każdym nowym wpisie od razu podzielić tekst na słowa? Jak to się powinno zrobić żeby nie zarżąć bazy? |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Żeby nie zarżnąć no to niestety... Tabela typu
word | exists_count | record_id i indeksy. Oczywiście powyższą tabelę musisz uzupełniac CO ZMIANĘ, DODANIE, USUNIĘCIE rekordu. Nie wiem jakie możliwości dają inne silniki wyszukiwania ale nie jestem pewien czy dadzą rade. Powiedz co dokładniej projektujesz to może znajdziemy sensowne rozwiązanie. Ten post edytował wookieb 12.09.2010, 20:05:52 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 439 Pomógł: 0 Dołączył: 3.06.2010 Ostrzeżenie: (50%) ![]() ![]() |
Projektuje forum internetowe
chodzi o wyświetlanie postów po wyszukaniu wg zadanej frazy |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
To po co Ci ta ilość wystąpień slów?
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 439 Pomógł: 0 Dołączył: 3.06.2010 Ostrzeżenie: (50%) ![]() ![]() |
posty mają byc posortowane malejąco wg ilości wystąpień słowa w tekscie
|
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Dziwne sortowanie. No nic, rozwiązanie dostałeś więc tak też trzeba będzie zrobić. Moim zdaniem nie ma sensu robić takiego "sortowanie" bo kiedy się przydaje?
Możesz np liczyć trafność wyników dla tematu (suma współczynnika podobieństwa dla postów z danego tematu). Co byś nie zrobił to odrazu mówię, że chyba żaden relacyjny silnik baz danych nie daje sobie bardzo dobrze rady z FULLTEXT-em i lepiej do tego celu użyć innych programów. W skrócie, przygotuje swoją aplikację na to aby mieć możliwość łatwego przejścia z jednego rozwiązania do drugiego. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 439 Pomógł: 0 Dołączył: 3.06.2010 Ostrzeżenie: (50%) ![]() ![]() |
Dziwne sortowanie. No nic, rozwiązanie dostałeś więc tak też trzeba będzie zrobić. Moim zdaniem nie ma sensu robić takiego "sortowanie" bo kiedy się przydaje? Możesz np liczyć trafność wyników dla tematu (suma współczynnika podobieństwa dla postów z danego tematu). Co byś nie zrobił to odrazu mówię, że chyba żaden relacyjny silnik baz danych nie daje sobie bardzo dobrze rady z FULLTEXT-em i lepiej do tego celu użyć innych programów. W skrócie, przygotuje swoją aplikację na to aby mieć możliwość łatwego przejścia z jednego rozwiązania do drugiego. A jak zrobić liczenie trafności wyników? |
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
MATCH AGAINST zwraca ci liczbą oznaczającą trafność. Wystarczy to zsumować i pogrupować według id_tematu.
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 439 Pomógł: 0 Dołączył: 3.06.2010 Ostrzeżenie: (50%) ![]() ![]() |
MATCH AGAINST zwraca ci liczbą oznaczającą trafność. Wystarczy to zsumować i pogrupować według id_tematu. Czyli tak jak mam teraz?
Ten post edytował borpaw 13.09.2010, 06:52:46 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.09.2025 - 00:56 |