Wykonuję kwerendę wyszukiwania pełnego tekstu MS SQL Server. Muszę uciec od znaków specjalnych, więc mogę wyszukać konkretne hasło zawierające znaki specjalne. Czy istnieje wbudowana funkcja pozwalająca na uniknięcie ciągu wyszukiwania pełnego tekstu? Jeśli nie, jak byś to zrobił?Wyszukiwanie znaków SQL w postaci pełnego tekstu SQL Server Escape?
Odpowiedz
Złe wieści: nie ma mowy. Dobra wiadomość: nie potrzebujesz tego (bo i tak nie pomoże).
Napotkałem podobny problem w jednym z moich projektów. W moim rozumieniu jest to, że podczas budowania indeksu pełnotekstowego, SQL Server traktuje znaki wszystkim specjalne jako ograniczników słów, a zatem:
- Twoje słowo o takim charakterze jest reprezentowany jako dwa (lub więcej) słów indeksu pełnotekstowego.
- Te znaki są usunięte i nie pojawiają się w indeksie.
Rozważmy mamy następującą tabelę z odpowiedniego indeksu pełnotekstowego dla niego (co jest pomijane):
CREATE TABLE [dbo].[ActicleTable]
(
[Id] int identity(1,1) not null primary key,
[ActicleBody] varchar(max) not null
);
Rozważmy później dodać wiersze do tabeli:
INSERT INTO [ActicleTable] values ('digitally improvements folders')
INSERT INTO [ActicleTable] values ('digital"ly improve{ments} fold(ers)')
Spróbuj wyszukać:
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'digitally')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'improvements')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'folders')
i
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'digital')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'improve')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'fold')
Pierwsza grupa warunków zostanie dopasowana do pierwszego wiersza (a nie do drugiego), podczas gdy druga grupa będzie pasować tylko do drugiego rzędu.
Niestety nie mogłem znaleźć linku do MSDN (lub czegoś takiego), gdzie takie zachowanie jest jasno określone. Ale znalazłem official article, który mówi, jak konwertować cudzysłów dla pełnotekstowych zapytań wyszukiwania, który jest [niejawnie] wyrównany z wyżej opisanym algorytmem.
- 1. Postgresql wyszukiwanie pełnego tekstu tokenizer
- 2. Pobierz częstotliwości z SQL Server Wyszukiwanie pełnotekstowe
- 3. Wyszukiwanie najczęstszej postaci w ciągu znaków
- 4. Jak ignorować znaczniki html w Sql Server 2008 Wyszukiwanie pełnotekstowe
- 5. Testowanie białych znaków w SQL Server
- 6. SQL Server Wyszukiwanie pełnotekstowe FREETEXTTABLE wyszukiwanie wielu kolumn
- 7. Ile znaków może mieć instrukcja SQL Server SQL?
- 8. SQL Server LIKE zawierający wspornik znaków
- 9. Jak wdrożyć wyszukiwanie pełnotekstowe w materiałach wielojęzycznych w SQL Server
- 10. Wyszukiwanie tekstów w procedurach zapisanych w SQL Server 2005
- 11. BLOB na ciąg znaków, SQL Server
- 12. Ocena Boolean SQL Server
- 13. Indeks Wyszukiwanie i skanowanie indeksu w SQL Server
- 14. Wyszukiwanie wysokości drzewa B tabeli w SQL Server
- 15. Escape surowe kwerendy SQL w Laravel 4
- 16. UNIX_TIMESTAMP w SQL Server
- 17. Przecięcie w SQL Server
- 18. Wyszukiwanie pełnotekstowe w SQL Azure
- 19. SQL Server Sortowanie
- 20. SQL Server Wyszukiwanie pełnotekstowe dokładne dopasowanie z fallback
- 21. W SQL Server można znaleźć pierwszą liczbę w ciągu znaków?
- 22. Wyszukiwanie tekstu kropli oracle
- 23. Przywróć bazę SQL Server 2008 do SQL Server 2000
- 24. Wybór SQL Server Express i SQL Lite
- 25. Migracja z SQL Azure do SQL Server
- 26. Jak bezpieczny jest T-SQL po zastąpieniu znaku "escape"?
- 27. SQL Server „: setvar” Błąd
- 28. Ograniczenie SQL Server NULL
- 29. dane grupowanie SQL Server
- 30. Ekwiwalenty SQL Server TOP