![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 11.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
Hej,
To mój pierwszy post na forum:) Mam pewnien problem z sortowaniem wyników zwracanych przez sphinx. Założenia: - Sphinx posiada dwa indexy main (przebudowywany/mergowany raz dziennie) i delta (co kilka minut dla ostatnio zmodyfikowanych rekordów) - Do zapytania dla Sphinxa podaję też limit i offset dzieki temu dostaję ograniczoną tablicę ideków - Sphinx sam odpowiedzialny jest za sortowanie zwracanych ideków wg. trafności, daty bądz alfabetycznie. Przy sortowaniu alfabetycznym nie mogę uzyc atrybutu str2ordinal ponieważ Sphinx oddzielnie posortuje każdy index (każdy rekord będzie miał wyliczona pozycję sortowania dla miejsca w indexie w którym on sam sie znajduje). W takim przypadku nowe rekordy gubiłyby mi się w sortowaniu. Myslę, że najlepszym wyjściem byłoby konwertowanie sortowanego stringa na integer (nie moge przekroczyc dla niego wielkości 32bit). Chciałbym napisać algorytm który dla stringa i podanego alfabetu (0..9aąbcć..zźż# - gdzie # zastepuje wszystkie inne znaki) wygeneruje integer określający miejsce w posortowanym zbiorze wszystkich możliwych kombinacji (dla 9 liter powinienem się zmiescić ![]() Kolejnośc sortowania określa miejsce w ciagu podanego alfabetu (słowa zaczynające się zerem najwyżej itd.). Póki co napisałem prostą funkcję dla 5 liter (jeszcze dokładnie nie testowałem:P):
Ktoś spotkał się może z takim problemem? A moze jest jakis zupełnie inny patent na takie sortowanie wg stringa w sphinxie po kilku indexach. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 27.04.2024 - 14:44 |