Ich habe eine Spalte mit einem Produktnamen. Einige Namen sehen aus wie 'ab-cd' 'ab cd' Ist es möglich, Volltextsuche zu verwenden, um diese Namen zu erhalten, wenn der Benutzertyp 'abc' (ohne Leerzeichen) verwendet wird? Der Operator like
arbeitet für mich, aber ich würde gerne wissen, ob es möglich ist, die Volltextsuche zu verwenden.SQL Server Volltextsuche und Leerzeichen
Antwort
Nein, leider können Sie solche Suche nicht über den Volltext durchführen. Sie können nur LIKE
in diesem Fall LIKE ('ab%c%')
EDIT1 verwenden:
Sie eine Ansicht erstellen können (WITH SCHEMABINDING
!) Mit einigen id
und Spaltennamen, in dem Sie suchen möchten:
CREATE VIEW dbo.ftview WITH SCHEMABINDING
AS
SELECT id,
REPLACE(columnname,' ','') as search_string
FROM YourTable
Dann erstellen Index
CREATE UNIQUE CLUSTERED INDEX UCI_ftview ON dbo.ftview (id ASC)
Dann cre aß Volltextsuchindex auf search_string
Feld.
Danach können Sie CONTAINS
Abfrage mit "abc*"
suchen und es wird finden, was Sie brauchen.
EDIT2:
Aber es helfen werden nicht, wenn search_string
nicht mit Ihrem Suchbegriff beginnt.
Zum Beispiel:
ab c d -> ABCD und Sie cd
Ich verstehe Ihren Kommentar nicht. OP hat geschrieben: * Ist es möglich, die Volltextsuche zu verwenden, um diese Namen zu erhalten, wenn der Benutzertyp 'abc' (ohne Leerzeichen) * also, was ist 'nicht mit FTS'. Bitte klären Sie. – gofr1
Entschuldigung, habe deine Antwort nicht gelesen. Ich glaube jedoch nicht, dass die Verkettung aller Wörter zu einem Superterm eine vernünftige Lösung ist. Was machen Sie, wenn der Superterm nicht mit Ihrem ersten Suchbegriff beginnt? – Jodrell
Sie haben Recht, das ist ein Problem hier. Danke, ich sollte diese Info zu meiner Antwort hinzufügen. – gofr1
Nr Volltextsuche auf Wörter und Phrasen suchen basiert. Es speichert nicht den ursprünglichen Text. In der Tat wird es je nach Konfiguration nicht einmal alle Wörter speichern - es gibt sogenannte Stoppwörter, die niemals in den Index gehen. Beispiel: Im Englischen ist das Wort "in" nicht selektiv genug, um als speichernswert angesehen zu werden.
Einige Namen aussehen ‚ab-cd‘ ‚ab cd‘
Diejenigen wahrscheinlich nicht bekommen, überhaupt gespeichert. Zumindest das zweite Beispiel ist eigentlich 2 extrem kurze Wörter - ziemlich wahrscheinlich werden sie völlig ignoriert.
Also, nein - Volltextsuche ist dafür nicht geeignet.
eigentlich sind 'ab' und' cd' keine Wörter in der Standard-Stop-Liste, also würde nicht ignoriert werden, aber Sie haben Recht, dass Sie ein Problem haben würden, nach tatsächlichen Stop/Noise-Wörtern zu suchen. – Jodrell
Ich bin mir nicht sicher, ob es nicht auch eine minimale Wortlänge gibt - also können ab und cd deswegen einfach ignoriert werden. – TomTom
'ab-cd' 'ab cd' - es waren keine echten Daten, nur ein Beispiel. Und danke für die Antwort - "Volltextsuche ist dafür nicht geeignet" - das wollte ich wissen – Serg88
Wenn Sie FTS verwenden möchten, um Begriffe zu finden, die nebeneinander liegen, wie Wörter, die durch ein Leerzeichen getrennt sind, sollten Sie einen Näherungsbegriff verwenden.
Sie können einen Näherungsbegriff definieren, indem Sie das Schlüsselwort NEAR
oder den Operator ~
im Suchausdruck as documented here verwenden.
Also, wenn Sie wollen ab
unmittelbar gefolgt von cd
finden Sie den Ausdruck verwenden könnte,
'NEAR((ab,cd), 0)'
für das Wort suchen ab
gefolgt von dem Wort cd
mit 0 Begriffe in-between.
Aber wenn der Benutzer 'abc' in eine Suchzeichenfolge schreibt, wie würde ich jetzt das 'NEAR ((ab, cd), 0)' erstellen? – Serg88
@ serg88, vermutlich müssten Sie den Text parsen und suchen, '' abc | a-bc | ab-c | abc | NEAR ((a, bc), 0) | NEAR ((ab, c), 0) | NEAR ((a, b, c), 0) '', wenn die Länge des Strings fortfährt, können Sie sehen, dass die Komplexität exponentiell anwächst. – Jodrell
- 1. SQL Server-LOB-Datenkomprimierung und Volltextsuche
- 2. SQL Server Volltextsuche und Suche Spalte
- 3. Ranking der Volltextsuche (SQL Server)
- 4. SQL Server 2008 Volltextsuche Ergebnisse
- 5. SQL Server Volltextsuche sehr langsam
- 6. Volltextsuche mit SQL-Server 2008
- 7. SQL Server Volltextsuche Escape Characters?
- 8. SQL-Volltextsuche
- 9. SQL-Volltextsuche vs "LIKE"
- 10. Fremd Flexion Verhalten in SQL Server-Volltextsuche
- 11. Wie Volltextsuche auf SQL Server 2008
- 12. SQL Server Volltextsuche FREETEXTTABLE Suche mehrere Spalten
- 13. Volltextsuche in SQL Server 2005/2008
- 14. SQL Server Volltextsuche mit nordischen Zeichen
- 15. Geräuschwörter in Sql Server 2005 Volltextsuche
- 16. SQL Server-Volltextsuche nicht unterstützt 'für' Schlüsselwort
- 17. Brauchen Sie Hilfe mit Sql Server 2008 und Volltextsuche
- 18. Elasticsearch vs SQL Volltextsuche
- 19. SQL-Volltextsuche Index Binärfeld
- 20. SQl Volltextsuche funktioniert nicht?
- 21. Volltextsuche in SQL Azure
- 22. Testen für Leerzeichen in SQL Server
- 23. Ist SQL Server Naming Trailing-Leerzeichen unempfindlich?
- 24. SQL Server: distinct mit nachfolgenden Leerzeichen
- 25. Entfernen von Leerzeichen und Aktualisieren in Spalten in SQL Server
- 26. Entity Framework und SQL Server fügt Leerzeichen in Zeichenfolgen hinzu?
- 27. Verwenden der Volltextsuche mit PDF-Dateien in SQL Server 2005
- 28. Wie schwer ist es, Volltextsuche mit SQL Server zu integrieren?
- 29. Wie HTML Tags in Sql Server 2008 zu ignorieren Volltextsuche
- 30. SQL Server 2012 Installieren oder Hinzufügen von Volltextsuche
Volltextsuche ist * Sprache * orientiert. Es funktioniert in Form von * Wörtern * und * Phrasen *. Sie sollten nicht erwarten, dass es mit Leerzeichen oder Satzzeichen arbeitet, die es bereits verwendet, um die Wörter zu trennen. –