FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Klarade millennium-buggen
|
Hej.
Jag håller på och migrerar från mysql-fulltextsökning till sphinx och behöver lite vägledning med hur jag skall sortera resultaten. I dagsläget så sorterar jag beroende av olika värden i en separat rankningstabell i mysql. Varje id har ett värde som jag vill använda tillsammans med relevansvärdet som sphinx returnerar. Så hur sätter jag ihop det med sphinx? Går det att kombinera 2 sphinx-index eller måste jag göra en join när jag läser in data till sphinx. Detta sista alternativ skulle fungera om det inte vore för att min tabell med rankningsdata uppdateras väldigt ofta. Något liknande detta skulle jag vilja utföra men det verkar inte gå att joina index: Kod:
select *,weight() from test1 join rankindex on test1.id=rankindex.id WHERE MATCH('$queryterm') order by rankdata+weight() desc LIMIT 0,50') Senast redigerad av Erik Stenman den 2015-09-07 klockan 16:53 |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Nykomling
|
Osäker på Sphinx, men har du kollat upp Algolia? Hosted Search as a service, du slipper belasta egen server och requestsen går galet fort. Enkelt att implementera med.
|
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Administratör
|
Aldrig använt Sphinx via MySQL men oavsett om du faktiskt kan göra en join på ranken, t ex via att låta Sphinx-queryn vara en subquery (vet inte om det funkar) på kommer detta vara väldigt ineffektivt sätt att göra det på. Det enda vettiga är indexera all data som behövs för rankingen. Vid väldigt små resultssets kan det funka OK att efterranka, men så fort man får större resultat (eller t ex använder Sphinx för filtrering/sortering osv) så handikappar du verkligen Sphinx.
__________________
eldefors.com - Personlig (teknik)-blogg |
||
![]() |
![]() |
Svara |
|
|