แคตตาล็อกข้อความแบบเต็มพร้อมการเปลี่ยนแปลงจะติดตาม: AUTO จะอัปเดตโดยอัตโนมัติหรือไม่หากการติดตามการเปลี่ยนแปลงสำหรับตารางนั้นไม่ได้เปิดใช้งานหรือไม่


12

ฉันมีตารางฐานข้อมูลนี้ที่ควรเก็บดัชนีข้อความแบบล่าสุด อย่างไรก็ตามฉันไม่เห็นว่าเกิดขึ้นเลย (ไม่มีข้อผิดพลาดในบันทึกเพราะบันทึกล่าสุดที่ฉันเห็นคือเมื่อฉันเรียกมันด้วยตนเอง)

นี่คือสิ่งที่ฉันเห็น ...

คุณสมบัติแค็ตตาล็อกของข้อความ

แต่บนโต๊ะตัวเอง ...

ป้อนคำอธิบายรูปภาพที่นี่

นี่อาจเป็นสาเหตุที่ไม่เกิดขึ้นโดยอัตโนมัติหรือไม่


เพื่อความชัดเจนคุณต้องการอ้างอิงบันทึกใด
Mike Zalansky

@mikezalansky บันทึกข้อความแบบเต็มซึ่งสามารถพบได้ที่(..\MSSQL\Log\SQLFT*)
Kin Shah

คำตอบ:


14

คุณกำลังดูสถานที่ที่ผิด

คุณต้องตรวจสอบด้านล่าง:

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่

ใช้ T-SQL ..

Use database_name
go
ALTER FULLTEXT INDEX ON schema.table_name SET CHANGE_TRACKING AUTO;

เมื่อเสร็จแล้วคุณสามารถตรวจสอบสถานะของวันที่และเวลาที่มีประชากรล่าสุดได้

-- script source : http://stackoverflow.com/a/10505496/1387418
-- Modified by Kin on Dec 14' 2015 to reflect the FTCatalogName
DECLARE @CatalogName VARCHAR(MAX)
SET     @CatalogName = 'AW2008FullTextCatalog' -- change here !

SELECT name as FTCatalogName, 
    DATEADD(ss, FULLTEXTCATALOGPROPERTY(@CatalogName,'PopulateCompletionAge'), '1/1/1990') AS LastPopulated
    ,(SELECT CASE FULLTEXTCATALOGPROPERTY(@CatalogName,'PopulateStatus')
        WHEN 0 THEN 'Idle'
        WHEN 1 THEN 'Full Population In Progress'
        WHEN 2 THEN 'Paused'
        WHEN 3 THEN 'Throttled'
        WHEN 4 THEN 'Recovering'
        WHEN 5 THEN 'Shutdown'
        WHEN 6 THEN 'Incremental Population In Progress'
        WHEN 7 THEN 'Building Index'
        WHEN 8 THEN 'Disk Full.  Paused'
        WHEN 9 THEN 'Change Tracking' END) AS PopulateStatus
FROM sys.fulltext_catalogs

ป้อนคำอธิบายรูปภาพที่นี่

แทรกข้อมูลบางส่วน ..

insert into HumanResources.JobCandidate
(BusinessEntityID, Resume, ModifiedDate)
values 
    (4, NULL, DEFAULT)

ตอนนี้คุณจะเห็นว่า FT Catalog อัพเดทแล้ว

ป้อนคำอธิบายรูปภาพที่นี่

ในบันทึก ( ..\MSSQL\Log\SQLFT*) ยังด้านล่างจะเป็นข้อความ ...

2015-12-14 12: 36: 51.29 spid50s ข้อมูล: ประชากรอัตโนมัติแบบข้อความสมบูรณ์สำหรับตารางหรือมุมมองที่จัดทำดัชนี '[AdventureWorks2012]. [HumanResources]. [JobCandidate]' (ตารางหรือดัชนีมุมมองที่จัดทำดัชนี '1589580701', ID ฐานข้อมูล ' 5) จำนวนเอกสารที่ประมวลผล: 1. จำนวนเอกสารล้มเหลว: 0. จำนวนเอกสารที่จะลองใหม่: 0

จากBOL :

โดยค่าเริ่มต้นหรือถ้าคุณระบุ CHANGE_TRACKING AUTO เอ็นจิ้นข้อความแบบเต็มจะใช้การเติมข้อมูลอัตโนมัติในดัชนีข้อความแบบเต็ม หลังจากการเติมเต็มประชากรเริ่มต้นเสร็จสมบูรณ์การเปลี่ยนแปลงจะถูกติดตามเมื่อมีการแก้ไขข้อมูลในตารางฐานและการเปลี่ยนแปลงที่ติดตามจะถูกถ่ายทอดโดยอัตโนมัติ ดัชนีข้อความแบบเต็มได้รับการปรับปรุงในพื้นหลังอย่างไรก็ตามการเปลี่ยนแปลงที่เผยแพร่อาจไม่ปรากฏในดัชนีทันที

โดยค่าเริ่มต้น SQL Server จะเติมดัชนีข้อความแบบเต็มใหม่โดยสมบูรณ์ทันทีที่สร้างขึ้น อย่างไรก็ตามประชากรทั้งหมดสามารถใช้ทรัพยากรจำนวนมาก ดังนั้นเมื่อสร้างดัชนีข้อความแบบเต็มในช่วงระยะเวลาสูงสุดมักเป็นวิธีที่ดีที่สุดในการชะลอจำนวนประชากรทั้งหมดจนกว่าจะถึงช่วงเวลาที่ไม่เหมาะสมโดยเฉพาะหากตารางฐานของดัชนีข้อความแบบเต็มมีขนาดใหญ่ อย่างไรก็ตามแค็ตตาล็อกข้อความแบบเต็มซึ่งดัชนีนั้นไม่สามารถใช้ได้จนกว่าดัชนีข้อความแบบเต็มทั้งหมดจะถูกเติม

นอกจากนี้โปรดดูที่การปรับปรุงประสิทธิภาพของดัชนีข้อความแบบเต็ม


ขอบคุณ! ปัญหาที่ฉันดูคือสาเหตุที่ดูเหมือนจะไม่อัปเดตเลยจนกว่าฉันจะสร้างดัชนีใหม่ด้วยตนเอง ไม่แน่ใจว่าเกี่ยวข้องกันหรือไม่ แต่ฐานข้อมูลที่ดูเหมือนว่ามีปัญหานี้ส่วนใหญ่เป็นฐานข้อมูลที่ถูกทำมิเรอร์ด้วย
MetaGuru

Issue I am looking at is why it doesn't seem to update at all until I manually rebuild the index.คุณได้ตั้งค่าตามสิ่งที่ฉันแสดงให้เห็นไหม หากมีการเปลี่ยนแปลงมากมายมันจะต้องใช้เวลาสักThe full-text index is updated in the background, however, so propagated changes might not be reflected immediately in the index.
หน่อย

ใช่ฉันตรวจสอบสถานที่ที่คุณแสดงและได้รับการกำหนดค่าอย่างถูกต้องเหมือนในตัวอย่างของคุณ ... แปลกแม้ครั้งสุดท้ายที่บันทึกบอกว่าดัชนีนี้ได้รับการอัปเดตเมื่อไม่นานมานี้สัปดาห์ที่ผ่านมาเปรียบเทียบกับแถวใหม่ล่าสุดที่เพิ่ม .. มันจะทำงานเมื่อมีการเพิ่มแถวใหม่ตามสิทธินี้
MetaGuru

1
ใช่ .. ฉันทดสอบแล้วโพสต์เป็นคำตอบ
Kin Shah

1

ด้วยเหตุผลบางอย่างตัวทำดัชนีข้อความแบบเต็มหยุดการเติมข้อมูลอัตโนมัติสำหรับหนึ่งในฐานข้อมูล SQL 2012 ของฉันหลังจากที่แบบจำลองฐานข้อมูลกลุ่มที่มีจำหน่ายรองของฉันเข้ามาแทนที่และกลายเป็นแบบจำลองหลัก

หลังจากลบดัชนีข้อความแบบเต็มและสร้างมันใหม่บนตารางที่มีการเติมอัตโนมัติแล้วมันก็เริ่มทำการเติมข้อมูลอัตโนมัติอีกครั้ง ฉันใช้ SQL Management Studio และตัวช่วยสร้างดัชนีข้อความแบบเต็มเพื่อสร้างดัชนีใหม่

ฉันเป็นห่วงว่าจะใช้เวลานานเท่าใดในการรันการจัดทำดัชนีข้อมูลแบบเต็ม ฉันประหลาดใจมากที่ใช้เวลาประมาณ 5 นาทีในการสร้างดัชนีข้อความ 3 คอลัมน์ใหม่จากตารางที่มีการบันทึก 547619 ครั้ง

การตั้งค่าการติดตามการเปลี่ยนแปลงระดับตารางที่อ้างถึงในคำถามยังคงปิดใช้งานอยู่ ดังนั้นการติดตามการเปลี่ยนแปลงดัชนีข้อความแบบเต็มจึงแตกต่างจากการตั้งค่าการติดตามการเปลี่ยนแปลงตารางอย่างแน่นอน คุณไม่จำเป็นต้องเปิดใช้งานการติดตามการเปลี่ยนแปลงตารางสำหรับการติดตามการเปลี่ยนแปลงการจัดทำดัชนีข้อความแบบเต็มและการจัดทำดัชนีข้อความแบบอัตโนมัติให้ทำงานโดยอัตโนมัติ

การรันเคียวรีต่อไปนี้จากฐานข้อมูลจะแสดงครั้งสุดท้ายที่ตัวทำดัชนีข้อความแบบเต็มของคุณรันการรวบรวมข้อมูล

  SELECT  * FROM sys.fulltext_indexes

เมื่อเปิดอัตโนมัติโดยอัตโนมัติ crawl_end_date ควรเปลี่ยนหลังจากที่คุณแทรกข้อมูลลงในตาราง

นอกจากนี้คุณจะทราบว่าเมื่อคุณเรียกใช้แบบสอบถามที่ใช้ดัชนีข้อความแบบเต็มมันจะแสดงข้อมูลล่าสุด:

  select TOP 10 * from YOURDATATABLE where contains((YOUR_indexed_column),'YOURSEARCHTERM') order by YOURPRIMARYKEYCOLUMN desc

การอ้างอิงเพิ่มเติม:

บทความอธิบายวิธีการต่าง ๆ ของประชากรการค้นหาข้อความแบบเต็ม: https://msdn.microsoft.com/en-us/library/ms142575%28v=sql.100%29.aspx

ข้อมูลเกี่ยวกับการสืบค้นตารางข้อความแบบเต็มดัชนี: https://technet.microsoft.com/en-us/library/ms142571(v=sql.110).aspx#queries

บทความเกี่ยวกับสถาปัตยกรรมการค้นหาข้อความแบบเต็ม: https://technet.microsoft.com/en-us/library/ms142571(v=sql.110).aspx#ar Architecture

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.