Just nu i M3-nätverket
Gå till innehåll

FULLTEXT som söker inom ord?


Christoph

Rekommendera Poster

Hej,

 

jag har en lista med "tags" som jag använder mig av för att försörja en autocomlete-funktion på en sajt med ett JSON-response. Problemet är att jag inte riktig vet hur man söker inom ord, inte bara från ordets början:

 

SELECT *, MATCH(tagText) AGAINST ('+bull*' IN BOOLEAN MODE) AS score FROM tag WHERE MATCH(tagText) AGAINST ('+bull*' IN BOOLEAN MODE) ORDER BY score DESC, tagText ASC LIMIT 0,5

 

Returnerar t ex "bullar" eller "bulldog", men inte "köttbullar".

 

Finns det någon som vet om detta ens är möjligt? Jag kunde ju använda mig av LIKE "%...%", men då får jag ingen relevans - vilket är viktig.

 

Tacksam för all hjälp!

 

Christoph

Länk till kommentar
Dela på andra webbplatser

kan du inte lägga till ett OR där du skriver '+*bull*' eller liknande?

 

Tyvärr inte - +*bull* returnerar ingenting. Citat från manualen ang. *-operator'n:

 

The asterisk serves as the truncation (or wildcard) operator. Unlike the other operators, it should be appended to the word to be affected. Words match if they begin with the word preceding the * operator.

Länk till kommentar
Dela på andra webbplatser

Fixed.

 

SELECT *
FROM tag
WHERE tagText LIKE "%bull%"

ORDER BY 
ROUND(( /* dettta räknar antal förekomster i strängen */
    LENGTH(
        REPLACE(tagText, 'bull', REPEAT('bull', 2))
        ) -
    LENGTH(
        tagText
        )
) / 2) DESC, 

       IF (tagText LIKE 'bull%',1,0) DESC, /* extrapoäng om frasen börjar med 'bull' */
       LENGTH(tagText) /* extrapoäng om frasen är kort */

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...