Jag kör med en sökning i några textfält i en databas enligt principen "select...from..where...like..." Hmmz....jag tror du kan skriv ORDER BY fält Hmm...du får nog specificera dig lite mer, gärna visa din SQL kod eller hur du vill att den ska fungera. Menar du att den ska söka i en textmängd i en kolumn och de rader där ett visst ord förekommer flest ggr i den genomsökta kolumnen ska returneras före övriga så är svaret nej, det går inte utan någon fritextsökning. En fritextsökning? Du behöver någon applikation för att göra fritextsökningar i din text. Alltså en som indexerar och tillhandahåller ett gränssnitt för att söka i dessa index. I SQL Server finns en sådan komponent inkluderad som heter Full-Text Search (FTS). Så om man som i mitt fall nu kör mot en Access 2000 databas så är det kört, eller? Nej, då får du implementera ett eget fritextindex i databasen och söka i det. VARNING! Här kommer en riktigt ful lösning som du INTE sak använda om du har en stor databas och några som helst krav på prestanda!!! Jag vet dessutom inte om det fungerar när du kör från ASP, men det fungerar direkt i Access...få fram den med mest träffar ur databasen?
Nu undrar jag, kan jag få RS:et sorterat enligt antalet träffar den fick inom varje post?
Dvs. om jag söker på ett ord vill jag ha posterna där ordet påträffades tre ggr före de poster där ordet bara fanns en eller två ggr, osv...
Tack på förhand.Sv: få fram den med mest träffar ur databasen?
/dazzeSv: få fram den med mest träffar ur databasen?
Sv: få fram den med mest träffar ur databasen?
Hur menar du då? Hur löser jag det då?
Precis som du säger har jag kolumner med textmassor i en databas som jag vill söka i, samt kunna presentera dem i sådan ordning att den med flest träffar hamnar först.Sv: få fram den med mest träffar ur databasen?
Sv: få fram den med mest träffar ur databasen?
Det finns inget annat sätt via en vanlig sql-sats att då göra sökning med de bästa träffarna först?Sv: få fram den med mest träffar ur databasen?
Sv: få fram den med mest träffar ur databasen?
Börja med att skapa en funktion i en modul i databasen som ser ut såhär:
Function ersatt(a As String, b As String, c As String) As String
ersatt = Replace(a, b, c)
End Function
SQL-satsen ser ut på följande sätt:
SELECT *
FROM tabell
WHERE (((textfält) Like "*hej*"))
ORDER BY Len([textfält])-Len(ersatt([textfält],"hej","")) DESC
Som sagt, ingen bra lösning, men det fungera...:)
/Johan