programing

테이블 또는 인덱싱된 뷰가 전체 텍스트 인덱싱되지 않았기 때문에 테이블 또는 인덱싱된 뷰에서 CONTINES 또는 FREETEXT 서술어를 사용할 수 없습니다.

css3 2023. 7. 9. 12:35

테이블 또는 인덱싱된 뷰가 전체 텍스트 인덱싱되지 않았기 때문에 테이블 또는 인덱싱된 뷰에서 CONTINES 또는 FREETEXT 서술어를 사용할 수 없습니다.

SQL Server 2008 R2 데이터베이스에 다음 오류가 발생합니다.

사용할 수 없음CONTAINS또는FREETEXT전체 텍스트 색인화되지 않았기 때문에 테이블 또는 색인화된 뷰 'tblArmy'의 술어입니다.

  1. 전체 텍스트 검색 기능이 설치되어 있는지 확인합니다.

Full-Text Search setup

  1. 전체 텍스트 검색 카탈로그 작성(필요한 경우)

    먼저 이미 존재하는 카탈로그가 있는지 확인합니다.

      select *
      from sys.fulltext_catalogs
    

    카탈로그를 찾을 수 없는 경우 카탈로그 만들기

      use [DatabaseName]
      create fulltext catalog FullTextCatalog as default
    

    카탈로그가 위와 동일한 방법으로 생성되었는지 확인할 수 있습니다.

  2. 전체 텍스트 검색 색인을 작성합니다.

      create fulltext index on Production.ProductDescription(Description)
      key index PK_ProductDescription_ProductDescriptionID
    

    인덱스를 생성하기 전에 다음 사항을 확인하십시오.
    테이블에 하나의 전체 텍스트 검색 색인만 허용되므로 테이블에 아직 전체 텍스트 검색 색인이 없습니다.
    테이블에 고유 인덱스가 있습니다.인덱스는 NULL을 허용하지 않는 단일 키 열을 기반으로 해야 합니다.
    전체 텍스트 카탈로그가 있습니다.기본 전체 텍스트 카탈로그가 없는 경우 전체 텍스트 카탈로그 이름을 명시적으로 지정해야 합니다.

SQL Server Management Studio에서 2단계와 3단계를 수행할 수 있습니다.개체 탐색기에서 테이블을 마우스 오른쪽 단추로 클릭하고 다음을 선택합니다.Full-Text index메뉴 항목 및 다음Define Full-Text Index...하위 항목전체 텍스트 인덱싱 마법사가 프로세스를 안내합니다.또한 아직 전체 텍스트 검색 카탈로그가 없는 경우에는 전체 텍스트 검색 카탈로그를 작성합니다.

enter image description here

MSDN에서 더 많은 정보를 찾을 수 있습니다.

단계를 수행한 후 전체 텍스트 검색 색인을 작성하려면 몇 분이 필요합니다(표 및 열 데이터의 크기에 따라 다름).

에 대한 해결 방법CONTAINS열에 전체 텍스트 색인을 만들지 않고 성능이 우선 순위 중 하나가 아닌 경우LIKE사전 구성이 필요 없는 문:

예: 문자 Q가 포함된 모든 제품 찾기:

SELECT ID, ProductName
FROM [ProductsDB].[dbo].[Products]
WHERE [ProductsDB].[dbo].[Products].ProductName LIKE '%Q%'

정의해야 합니다.Full-Text-Index쿼리를 사용해야 하는 데이터베이스의 모든 테이블에서CONTAINS시간이 좀 걸릴 겁니다

대신 사용할 수 있습니다.LIKE테이블 설정을 조정할 필요 없이 즉각적인 결과를 제공합니다.

예:

SELECT * FROM ChartOfAccounts WHERE AccountName LIKE '%Tax%'

로 얻은 동일한 결과CONTAINS로 얻을 수 있습니다.LIKE.

결과 보기:

전체 텍스트 색인화를 위해 테이블을 사용 가능으로 설정해야 할 수 있습니다.

열 전체 텍스트를 true로 설정하는 솔루션이 하나 더 있습니다.

예를 들어 이러한 솔루션은 저에게 적합하지 않았습니다.

ALTER TABLE news ADD FULLTEXT(headline, story);

나의 해결책.

  1. 테이블에서 마우스 오른쪽 버튼 클릭
  2. 설계.
  3. 편집할 열을 마우스 오른쪽 버튼으로 클릭합니다.
  4. 전체 텍스트 색인
  5. 더하다
  6. 가까운.
  7. 새로 고침

다음 단계

  1. 테이블에서 마우스 오른쪽 버튼 클릭
  2. 설계.
  3. 편집할 열을 클릭
  4. mssql 하단에 "열 속성" 탭이 있습니다.
  5. 전체 텍스트 사양 -> (전체 텍스트 인덱싱됨)이 true로 설정되었습니다.

새로 고침

mssql 2014 버전

검색할 특정 필드에 전체 텍스트 색인을 추가해야 합니다.

ALTER TABLE news ADD FULLTEXT(headline, story);

여기서 "news"는 테이블이며 전체 텍스트 검색에 사용하지 않을 "flash, story" 필드입니다.

Select * from table
where CONTAINS([Column], '"A00*"')  

%와 동일하게 작동합니다.

where [Column] Like 'A00%'

언급URL : https://stackoverflow.com/questions/6003240/cannot-use-a-contains-or-freetext-predicate-on-table-or-indexed-view-because-it