Ich benutze MySQL FULLTEXT Suche (im Natural Language Modus). Beispiel:Wie suche ich mit einer MySQL-Abfrage nach einem zweistelligen Wort?
SELECT Mem_id FROM Members WHERE MATCH (job_title) AGAINST ('".mysql_real_escape_string($keywordsWanted)."')
Ich bemerkte, dass für "Web Entwickler" oder "PHP Coder" nicht allzu gut Benutzer arbeiten und ich hinzugefügt, so ft_min_word_len=3
zur MySQL-Konfigurationsdatei (/etc/mysql/my.cnf). Zweistellige Suchbegriffe sind jedoch immer noch ein Problem. z.B. "IT Unternehmer", "PR Manager", "3D Design", etc. Dies sind einige Strategien, die ich versuchen, dachte:
- Verwenden
ft_min_word_len=2
- Wird dies nicht der Index MASSIVE machen und die DB verlangsamen? - Ändern Sie die Abfrage, um LIKE in Fällen zu verwenden, in denen das Schlüsselwort aus weniger als 3 Zeichen besteht?
- Allgemeine Akronyme automatisch in ganze Wörter übersetzen. z.B. IT -> „Information Technology“
- Ändern Sie die Benutzeroberfläche so ein Javascript Popup warnt den Benutzer, dass zwei Zeichen Worte werden nicht gezählt, so dass sie die Frage
- Verschieben verwenden Zend Lucene oder eine andere Suchtechnologie neu formulieren sollte
Was beraten Sie/Wie haben Sie dieses Problem angegangen?
REGEXPs wie 'something $' erfordern Tabelle volle Scans –
@ElvisCiotti das ist eine 3 Jahre alte Frage, es tut mir leid für meine Unverständnis damals. –
3J alt, aber die Frage ist immer noch gültig :) –