sql >> Databasteknik >  >> RDS >> Mysql

Hur man tillåter fulltextsökning med bindestreck i sökfrågan

Härifrån http://dev.mysql.com/doc /refman/5.0/en/fulltext-search.html

En lösning för att hitta ett ord med bindestreck eller bindestreck i är att använda FULLTEXTSÖKNING I BOOLENSK LÄGE och att omge ordet med bindestrecket / bindestrecket inom dubbla citattecken.

Eller härifrån http://bugs.mysql.com/bug.php?id=2095

Det finns en annan lösning. Det lades nyligen till i manualen:"Ändra en teckenuppsättningsfil:Detta kräver ingen omkompilering. True_word_char() makroanvänder en "teckentyp"-tabell för att skilja bokstäver och siffror från andra tecken. . Du kan redigera innehållet i ett av tecknen ställ in XML-filer för att ange att '-' är en "bokstav." Använd sedan den givna teckenuppsättningen för dina FULLTEXT-index."

Har inte provat det på egen hand.

Edit:Här är lite mer ytterligare information härifrån http:/ /dev.mysql.com/doc/refman/5.0/en/fulltext-boolean.html

En fras som är omgiven av dubbla citattecken (""") matchar endast rader som innehåller frasen bokstavligen, när den skrevs. Fulltextmotorn delar upp frasen i ord och gör en sökning i FULLTEXT-indexet efter orden. Före MySQL 5.0.3 utförde motorn sedan en delsträngssökning efter frasen i posterna som hittades, så matchningen måste inkludera icke-ordstecken i frasen. Från och med MySQL 5.0.3 behöver icke-ordstecken inte matchas exakt:Frassökning kräver bara att matchningar innehåller exakt samma ord som frasen och i samma ordning. Till exempel matchar "testfras" "test, fras" i MySQL 5.0.3, men inte tidigare.

Om frasen inte innehåller några ord som finns i indexet är resultatet tomt. Till exempel, om alla ord är antingen stoppord eller kortare än den minsta längden på indexerade ord, är resultatet tomt.



  1. MySQL-fel 1436:Överskriden trådstack, med enkel fråga

  2. Vad är det snabbaste sättet att göra en bulkinsert i Postgres?

  3. Uppdatera MySQL med if condition

  4. Hur skickar man en lista med ID:n till MySQL lagrad procedur?