sql >> Databasteknik >  >> RDS >> Mysql

Mysql fulltextindexeringsbegränsningar?

Det är det verkligen inte!

Alla söktermer som enbart består av blockerade ord kommer att misslyckas. Ord kan blockeras på grund av min/max längdbegränsningar och/eller stoppordsfilen.

Jag tyckte att standardstoppordsfilen var alldeles för aggressiv, den förhindrade många giltiga sökningar. Den förinställda minsta längden på 4 kom också väldigt ofta för akronymer som folk kanske vill söka efter. Jag minskade ft_min_word_len till 3 och tog bort stopplistan helt (ft_stopword_file=''). Dokument:http://dev.mysql.com /doc/refman/5.1/en/fulltext-fine-tuning.html

Du kan också undersöka sökfrågan för att se om den bara innehåller ord på <4 bokstäver, och falla tillbaka till en LIKE-sökning i så fall. Det finns inget så enkelt sätt att ta sig runt stopplistan på applikationsnivå.

Valet av "ordtecken" kanske inte uppfyller dina behov, och det är svårt att ändra. Att till exempel söka efter "Terry" matchar inte "Terrys". I allmänhet finns det inget stöd för någon form av härkomst, så "kex" matchar inte heller "kex".

Slutligen, som cg nämnde, finns det inget stöd för InnoDB. I denna tid vill du inte lägga all din data i en MyISAM-tabell.

Om du har lagringsutrymmet över, vad du kan göra är att lägga den huvudsakliga, kanoniska versionen av datan i en InnoDB-tabell och sedan skapa en separat MyISAM-tabell som innehåller en kopia av fritextinnehållet, enbart för användning som searchbait. Du måste uppdatera båda tabellerna vid en ändring, men om MyISAM-tabellen förlorar integritet så förlorar du åtminstone bara möjligheten att söka över de berörda raderna, istället för att samla upp den verkliga live-datan och få applikationsfel.

Du kan sedan, om du har cyklerna över, implementera din egen textbearbetning på sökbetet och frågeord för att komma runt några av ovanstående begränsningar. Du kan till exempel undvika tecken som du vill ska vara ord-tecken, ta bort tecken som du inte vill ska vara ord-tecken och utföra enkel manuell engelsk stemming.



  1. Hur man installerar och säkrar MariaDB på CentOS 7

  2. slå samman tre tabeller för specifika resultat

  3. ASP.NET MVC 4 EF5 med MySQL

  4. Hur man hittar platsen för datafiler och loggfiler i SQL Server