Udostępnij za pośrednictwem


Kreski "-" ignorowane w wyszukiwaniu za pomocą zapytań SQL Pełnotekstowych i MSIDXS

Ten artykuł ułatwia obejście problemu występującego podczas wyszukiwania pełnotekstowego na danych znaków programu SQL Server lub w przypadku używania zapytania rozproszonego SQL z dostawcą OLE DB programu Microsoft Index Server (MSIDXS) i wyszukiwaniem rozszerzenia prefiksu zawierającego wyraz złożony (na przykład XYZ-A*).

Dotyczy: SQL Server
Oryginalny numer KB: 200043

Symptomy

Podczas wyszukiwania pełnotekstowego w danych znaków programu SQL Server lub w przypadku korzystania z zapytania rozproszonego SQL u dostawcy OLE DB (MSIDXS) programu Microsoft Index Server i wyszukiwania rozszerzeń prefiksu zawierającego wyraz złożony zawierający łącznik (na przykład "XYZ-A*"), wygenerowane wyniki mogą nie być zgodnie z oczekiwaniami.

Przyczyna

Wyszukiwanie pełnotekstowe uważa wyraz za ciąg znaków bez spacji lub znaków interpunkcyjnych. Wystąpienie znaku innego niż alfanumeryczne może spowodować przerwanie wyrazu podczas wyszukiwania. Ponieważ wyszukiwanie pełnotekstowe programu SQL Server jest aparatem opartym na wyrazach, interpunkcja zwykle nie jest brana pod uwagę i jest ignorowana podczas przeszukiwania indeksu. W związku z tym klauzula, która będzie zgodna CONTAINS z wierszem z wartością , błąd znalezienia mojego komputera będzie kosztowny.CONTAINS(testing, "computer-failure")

Rozwiązanie

Aby obejść ten problem, spróbuj wykonać jedną z następujących metod:

  • Używaj znaków alfanumerycznych tylko w przypadku korzystania z obiektów indeksowania pełnotekstowego programu SQL Server.

  • Jeśli znak inny niż alfanumeryczny musi być używany w kryteriach wyszukiwania (przede wszystkim znak kreski - ), należy użyć klauzuli Transact-SQL LIKE zamiast FULLTEXT predykatów lub CONTAINS .

Więcej informacji

Program Microsoft SQL Server w wersji 7.0 umożliwia wykonywanie pełnotekstowego zapytania dotyczącego danych znaków przechowywanych w tabelach programu SQL Server. Możesz również użyć zapytania rozproszonego SQL z dostawcą MSIDXS, aby wyszukać dane systemu plików. Używanie kreski (-) w wyszukiwaniu zbliżeniowym nie jest obsługiwane i może spowodować nieoczekiwane wyniki.

Informacje

  • Aby uzyskać więcej informacji na temat wyszukiwania pełnotekstowego programu SQL Server, zobacz artykuł Sql Server Books Online (Książki programu SQL Server Online).

  • Aby uzyskać więcej informacji na temat używania klauzuli CONTAINS z dostawcą microsoft Index Server (MSIDXS), zobacz dokumentację serwera indeksów w dokumentacji pakietu opcji systemu Windows NT 4.0.