ฉันได้รับข้อผิดพลาดต่อไปนี้ในฐานข้อมูล SQL Server 2008 R2 ของฉัน:
ไม่สามารถใช้
CONTAINS
หรือFREETEXT
กริยาบนโต๊ะหรือมุมมองที่จัดทำดัชนี 'tblArmy' เพราะมันไม่ได้ข้อความเต็มรูปแบบการจัดทำดัชนี
ฉันได้รับข้อผิดพลาดต่อไปนี้ในฐานข้อมูล SQL Server 2008 R2 ของฉัน:
ไม่สามารถใช้
CONTAINS
หรือFREETEXT
กริยาบนโต๊ะหรือมุมมองที่จัดทำดัชนี 'tblArmy' เพราะมันไม่ได้ข้อความเต็มรูปแบบการจัดทำดัชนี
คำตอบ:
ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งคุณลักษณะการค้นหาข้อความแบบเต็มแล้ว
สร้างแคตตาล็อกการค้นหาข้อความแบบเต็ม
use AdventureWorks
create fulltext catalog FullTextCatalog as default
select *
from sys.fulltext_catalogs
สร้างดัชนีการค้นหาข้อความแบบเต็ม
create fulltext index on Production.ProductDescription(Description)
key index PK_ProductDescription_ProductDescriptionID
ก่อนที่คุณจะสร้างดัชนีโปรดตรวจสอบให้แน่ใจว่า:
- คุณยังไม่มีดัชนีการค้นหาข้อความแบบเต็มในตารางเนื่องจากดัชนีการค้นหาข้อความแบบเต็มเพียงรายการเดียวที่อนุญาตในตารางจึง
มีดัชนีเฉพาะอยู่ในตาราง ดัชนีต้องขึ้นอยู่กับคอลัมน์คีย์เดียวซึ่งไม่อนุญาตให้เป็น NULL
- มีแคตตาล็อกข้อความแบบเต็ม คุณต้องระบุชื่อแค็ตตาล็อกข้อความแบบเต็มอย่างชัดเจนหากไม่มีแค็ตตาล็อกข้อความเต็มเริ่มต้น
คุณสามารถทำขั้นตอนที่ 2 และ 3 ใน SQL Sever Management Studio ใน object explorer ให้คลิกขวาที่ตารางเลือกFull-Text index
รายการเมนูจากนั้นเลือกรายการเมนูDefine Full-Text Index...
ย่อย ตัวช่วยสร้างดัชนีแบบเต็มจะแนะนำคุณตลอดกระบวนการ นอกจากนี้ยังจะสร้างแคตตาล็อกการค้นหาข้อความแบบเต็มสำหรับคุณหากคุณยังไม่มี
คุณสามารถดูข้อมูลเพิ่มเติมได้ที่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
.
คุณต้องเพิ่มดัชนีแบบเต็มในช่องเฉพาะที่คุณต้องการค้นหา
ALTER TABLE news ADD FULLTEXT(headline, story);
โดยที่ "news" คือตารางและช่อง "พาดหัวเรื่องราว" ที่คุณไม่เคยเปิดใช้สำหรับการค้นหาแบบเต็มข้อความ
มีอีกวิธีหนึ่งในการตั้งค่าข้อความเต็มคอลัมน์เป็นจริง
ตัวอย่างเช่นวิธีแก้ปัญหาเหล่านี้ไม่ได้ผลสำหรับฉัน
ALTER TABLE news ADD FULLTEXT(headline, story);
ทางออกของฉัน
ขั้นตอนถัดไป
รีเฟรช
เวอร์ชันของ mssql 2014
Select * from table
where CONTAINS([Column], '"A00*"')
จะทำหน้าที่เป็น% เหมือนกับ
where [Column] Like 'A00%'