เครื่องมือค้นหาข้อความแบบเต็ม (1Cv8) กลไกการค้นหาข้อความแบบเต็ม (1Cv8) การจัดการการค้นหา 1s 8.3
เครื่องมือค้นหาข้อความแบบเต็ม
คุณสมบัติพื้นฐานของการค้นหาข้อความแบบเต็ม
- รองรับการทับศัพท์ (เขียนคำภาษารัสเซียด้วยตัวอักษรละตินตาม GOST);
- การสนับสนุนการทดแทน (เขียนส่วนหนึ่งของอักขระเป็นคำภาษารัสเซียด้วยอักขระละตินแบบคีย์เดียว);
- ความเป็นไปได้ของการค้นหาแบบคลุมเครือ (ตัวอักษรในคำที่พบอาจแตกต่างกัน) พร้อมตัวบ่งชี้เกณฑ์ความคลุมเครือ
- ความสามารถในการระบุขอบเขตของการค้นหาสำหรับวัตถุข้อมูลเมตาที่เลือก
- การนำเสนอผลการค้นหาในรูปแบบ XML และ HTML พร้อมเน้นคำที่พบ
- การทำดัชนีข้อความแบบเต็มของชื่อฟิลด์มาตรฐาน ("รหัส", "ชื่อ" ฯลฯ) ในภาษาการกำหนดค่าทั้งหมด
- ดำเนินการค้นหาโดยคำนึงถึงคำพ้องความหมายของภาษารัสเซีย ภาษาอังกฤษ และภาษายูเครน
- พจนานุกรมสัณฐานวิทยาของภาษารัสเซียมีคำเฉพาะจำนวนหนึ่งที่เกี่ยวข้องกับพื้นที่ของกิจกรรมโดยอัตโนมัติโดยใช้ 1C: ระบบซอฟต์แวร์ระดับองค์กร
- ความสามารถในการใช้พจนานุกรมค้นหาข้อความแบบเต็มเพิ่มเติม
- พจนานุกรมที่จัดส่งประกอบด้วยฐานพจนานุกรมและพจนานุกรมของอรรถาภิธานและคำพ้องความหมายของภาษารัสเซีย ภาษายูเครน และภาษาอังกฤษที่จัดทำโดยบริษัท Informatik
ค้นหาข้อความแบบเต็มในฐานข้อมูล
กลไกการค้นหาข้อความแบบเต็มในข้อมูลของระบบ 1C:Enterprise 8 ช่วยให้คุณค้นหาฐานข้อมูลด้วยการระบุโอเปอเรเตอร์การค้นหา (AND, OR, NOT, NEAR เป็นต้น)
กลไกการค้นหาข้อความแบบเต็มขึ้นอยู่กับการใช้สององค์ประกอบ:
- ดัชนีข้อความแบบเต็มที่สร้างขึ้นสำหรับฐานข้อมูลปัจจุบันแล้วอัปเดตเป็นระยะตามต้องการ
- เครื่องมือค้นหาข้อความแบบเต็ม
การสร้างและอัปเดตดัชนีข้อความแบบเต็มสามารถทำได้แบบโต้ตอบในโหมด 1C: Enterprise 8 หรือแบบใช้โปรแกรมโดยใช้ภาษาในตัว ด้านล่างนี้เป็นกล่องโต้ตอบสำหรับจัดการการจัดทำดัชนีข้อความแบบเต็มในโหมด 1C: Enterprise:
หากต้องการค้นหาข้อมูลในฐานข้อมูล ตัวอย่างเช่น สามารถใช้การประมวลผลการค้นหาข้อมูลด้านล่างได้
ในตัวอย่างที่นำเสนอ พบเอกสารที่มีรายละเอียดประกอบด้วยค่าที่ขึ้นต้นด้วย "Complete" และ "vent" - คู่สัญญา "Complete TD" และรายละเอียดที่มีคำว่า "fan" ในรูปแบบต่างๆ
ระบบ 1C:Enterprise 8 ให้คุณเลือกรวมข้อมูลของออบเจกต์แอปพลิเคชันและรายละเอียดในการค้นหาข้อความแบบเต็ม นอกจากนี้ยังสามารถจำกัดขอบเขตการค้นหาเฉพาะวัตถุการกำหนดค่าที่ระบุเท่านั้น
ค้นหาข้อความแบบเต็มในระบบวิธีใช้
ระบบวิธีใช้ 1C:Enterprise 8 ยังใช้การค้นหาข้อความแบบเต็มที่ให้คุณใช้ตัวดำเนินการค้นหา AND, OR, NOT, NEAR เป็นต้น ในกรณีนี้ คำที่พบจะถูกเน้น
อินเทอร์เฟซซอฟต์แวร์
มีการใช้วัตถุแอปพลิเคชันต่อไปนี้:
- ตัวจัดการการค้นหาข้อความแบบเต็ม
- รายการค้นหาข้อความแบบเต็ม
- ItemListFullTextSearch
FullTextSearch Manager มีเมธอดในการสร้างดัชนีการค้นหา ตรวจสอบความถูกต้อง และสร้างรายการค้นหาประเภท FullTextSearchList สำหรับคำค้นหาที่กำหนด
FullTextSearch Manager พร้อมใช้งานเป็นคุณสมบัติของบริบทส่วนกลางของ FullTextSearch
รายการ FullTextSearch ให้การเข้าถึงผลการค้นหา คุณยังสามารถระบุขอบเขตการค้นหาเป็นอาร์เรย์ขององค์ประกอบข้อมูลเมตาการกำหนดค่า
ผลลัพธ์ของการค้นหาคือ FullTextSearchListItem
ตัวดำเนินการสตริงการค้นหา
อนุญาตให้ใช้โอเปอเรเตอร์การค้นหาต่อไปนี้ในบรรทัดอินพุต:
AND (AND หรือ #) - ค้นหาข้อมูลที่มีทุกคำ ตัวอย่าง: "บันทึกและเอกสาร" - รายละเอียดต้องมีทั้ง "การดำเนินการ" และ "เอกสาร" (โดยคำนึงถึงลักษณะทางสัณฐานวิทยา)
หรือ (OR หรือ | หรือ,) - ค้นหาอย่างน้อยหนึ่งคำในรายการ ตัวอย่าง: "บันทึกหรือเอกสาร" - ต้องมีคำว่า "บันทึก" หรือ "เอกสาร" อย่างน้อยหนึ่งคำอยู่ในรายละเอียด
ไม่ (ไม่หรือ ~) - ค้นหาข้อมูลที่มีรายละเอียดประกอบด้วยคำแรก แต่ไม่ใช่คำที่สอง ตัวอย่าง: "ปิดไม่ใช่เดือน" - ทั้งหมดที่มีคำว่า "ปิด" แต่ไม่มีคำว่า "เดือน" ไม่อนุญาตให้ใช้ "~" ที่จุดเริ่มต้นของบรรทัด
ใกล้/n (ใกล้/[+/-]n) - ค้นหาข้อมูลที่มีคำที่ระบุในแอตทริบิวต์เดียวโดยคำนึงถึงสัณฐานวิทยาที่ระยะห่าง n คำระหว่างคำ
เครื่องหมายระบุว่าคำที่สองจะถูกค้นหาไปในทิศทางใดจากคำแรก ("+" - หลังคำแรก "-" - ก่อนคำแรก)
หากไม่ได้ระบุเครื่องหมาย จะพบข้อมูลที่มีคำที่ระบุในระยะห่าง n คำจากกันและกัน
ลำดับของคำไม่สำคัญ
- "เครื่องเป่าผม NEAR/3 air" - จะพบข้อมูลที่ "air" ไม่เกิน 3 คำก่อนหรือหลัง "เครื่องเป่าผม"
- เครื่องเป่าผม NEAR/+3 อากาศ - จะพบข้อมูลที่ "อากาศ" ไม่เกิน 3 คำหลัง "เครื่องเป่าผม"
- ไดร์เป่าผม NEAR/-3 air - ข้อมูลจะพบว่า "air" นำหน้า "ไดร์เป่าผม" ไม่เกิน 3 คำ
ใกล้ (ใกล้) - ตัวดำเนินการระยะทางแบบง่าย: ทั้งสองคำอยู่ห่างจากกันไม่เกิน 8 คำ ตัวอย่าง: "ถือเอกสาร NEAR";
"" (ข้อความในเครื่องหมายคำพูด) - ค้นหาวลีที่แน่นอนโดยคำนึงถึงลักษณะทางสัณฐานวิทยา ตัวอย่างเช่น "การส่งเอกสาร" - เทียบเท่ากับ: ถือ /1 เอกสาร;
() - การจัดกลุ่มคำ (ระดับการซ้อนจำนวนเท่าใดก็ได้); ตัวอย่าง: "(การลงรายการบัญชี | ใบแจ้งยอด) # (ใบแจ้งหนี้, เอกสาร)";
* - ค้นหาโดยใช้สัญลักษณ์แทน (แทนที่จุดสิ้นสุดของคำ) ต้องป้อนอักขระที่มีนัยสำคัญมากกว่า 1 ตัว ตัวอย่าง: "docu*" - ค้นหา "document", "document", "documentary" ฯลฯ
# - ค้นหาคำที่คลุมเครือโดยมีจำนวนความแตกต่างจากคำที่ระบุ (หากไม่ได้ระบุไว้ = 1); ตัวอย่าง: แบบสอบถาม "#System" จะพบ "ระบบ", "ระบบ"; แบบสอบถาม "System#2" จะพบ "sittama", "settema";
การค้นหาโดยคำนึงถึงคำพ้องความหมายของภาษารัสเซีย ภาษาอังกฤษ และภาษายูเครน "!" วางไว้หน้าคำที่เกี่ยวข้อง ตัวอย่างเช่น ค้นหา "!red tile" จะพบ "scarlet tile" และ "coral tile"
หากไม่ได้ระบุตัวดำเนินการ (คำถูกพิมพ์โดยเว้นวรรค) โปรแกรมจะค้นหาคำทั้งหมดจากข้อความค้นหาโดยใช้ตัวดำเนินการ AND
ตัวอย่าง
ArrayMD = อาร์เรย์ใหม่ (); ArrayMD.Add (Metadata.Catalogs.Products); ArrayMD.Add (Metadata.Documents.CashReceipt);
SearchList.SearchArea = ArrayMD; SearchList.SearchString = SearchInputField; SearchList.PortionSize = ขนาดส่วน; SearchList.FirstPart();
ถ้า SearchList.FullCount() = 0 ถ้า SearchList.TooManyResults() แล้วก็ Warning("ผลลัพธ์มากเกินไป โปรดปรับแต่งข้อความค้นหาของคุณ"); สิ้นสุดถ้า; กลับ; สิ้นสุดถ้า;
จำนวน = SearchList.FullCount();
StrHTML = SearchList.GetDisplay(FullTextSearchDisplayType.HTMLText); รายงาน (StrHTML);
สำหรับแต่ละดัชนี = 0 โดย LookupList.Count-1 องค์ประกอบลูป = LookupList.Get (ดัชนี); รายงาน (องค์ประกอบ ดู); EndCycle;
ลักษณะเฉพาะ
การค้นหาข้อความแบบเต็มทำงานในอาร์เรย์ข้อมูลทั้งหมด ดังนั้นเมื่อใช้งาน จึงจำเป็นต้องส่งผลลัพธ์ผ่านตัวกรองความปลอดภัย
ตัวอย่างเช่น ในระบบหลายฐาน คุณต้องตัดวัตถุออกจากฐานอื่นๆ
นอกจากนี้ การกรองดังกล่าวตัดกับการควบคุมการเข้าถึงอย่างใกล้ชิด เป็นที่ทราบกันดีว่าบ่อยครั้งที่ "ช่องโหว่" ในการรักษาความปลอดภัยนั้นเป็นกลไกการค้นหาอย่างแม่นยำ
ค้นหาข้อความแบบเต็ม- ช่วยให้คุณค้นหาข้อมูลที่เป็นข้อความซึ่งวางไว้เกือบทุกที่ในการกำหนดค่าที่ใช้ ในเวลาเดียวกัน คุณสามารถค้นหาข้อมูลที่จำเป็นในการกำหนดค่าทั้งหมดโดยรวม หรือโดยการจำกัดพื้นที่การค้นหาให้แคบลงเหลือวัตถุไม่กี่ชิ้น (เช่น เอกสารหรือไดเร็กทอรีบางประเภท) เกณฑ์การค้นหาอาจแตกต่างกันไปในช่วงกว้างพอสมควร นั่นคือคุณสามารถค้นหาข้อมูลที่จำเป็นได้โดยไม่ต้องจำว่าข้อมูลเหล่านั้นถูกเก็บไว้ที่ใดในการกำหนดค่าและบันทึกอย่างไร
การค้นหาข้อความแบบเต็มมีคุณสมบัติดังต่อไปนี้:
- มีการรองรับการทับศัพท์ (เขียนคำภาษารัสเซียด้วยอักขระละตินตาม GOST 7.79-2000) ตัวอย่าง: "วลีภาษารัสเซีย" = "ภาษารัสเซีย fraza"
- มีการรองรับการแทนที่ (เขียนส่วนหนึ่งของอักขระเป็นคำภาษารัสเซียด้วยอักขระละตินแบบคีย์เดียว) ตัวอย่าง: "russrfz frapf" (ส่วนท้ายของแต่ละคำพิมพ์เป็นภาษาละติน เช่น เป็นผลจากข้อผิดพลาดของตัวดำเนินการ)
- มีความเป็นไปได้ในการค้นหาแบบคลุมเครือ (ตัวอักษรในคำที่พบอาจแตกต่างกัน) โดยบ่งชี้ถึงเกณฑ์ความคลุมเครือ ตัวอย่าง: โดยการระบุคำว่า "สวัสดี" ในสตริงการค้นหาและความคลุมเครือ 17% เราจะพบคำที่คล้ายกันทั้งหมดที่มีและไม่มีข้อผิดพลาด: "สวัสดี", "สวัสดี", "นำ"
- สามารถระบุขอบเขตของการค้นหาสำหรับออบเจกต์ข้อมูลเมตาที่เลือกได้
- การทำดัชนีข้อความแบบเต็มของชื่อฟิลด์มาตรฐาน ("รหัส", "คำอธิบาย" ฯลฯ) ดำเนินการในภาษาการกำหนดค่าทั้งหมด
- การค้นหาดำเนินการโดยคำนึงถึงคำพ้องความหมายของภาษารัสเซีย อังกฤษ และยูเครน
- พจนานุกรมสัณฐานวิทยาของภาษารัสเซียมีคำเฉพาะจำนวนหนึ่งที่เกี่ยวข้องกับพื้นที่ของกิจกรรมโดยอัตโนมัติโดยใช้ระบบโปรแกรม 1C: Enterprise
- ตามมาตรฐาน พจนานุกรมที่ให้มาประกอบด้วยฐานข้อมูลคำศัพท์และพจนานุกรมของอรรถาภิธานและคำพ้องความหมายในภาษารัสเซีย ภาษายูเครน และภาษาอังกฤษ ซึ่งจัดทำโดย Informatik
- คุณสามารถค้นหาโดยใช้อักขระตัวแทน ("*") ตลอดจนระบุตัวดำเนินการค้นหา ("AND", "OR", "NOT", "NEAR") และอักขระพิเศษ
การค้นหาข้อความแบบเต็มสามารถทำได้ในการกำหนดค่าใด ๆ บนแพลตฟอร์ม 1C: Enterprise 8
หากต้องการเปิดหน้าต่างควบคุมการค้นหาข้อความแบบเต็ม ให้ทำดังต่อไปนี้:
แอปพลิเคชันทั่วไป- รายการเมนู การดำเนินการ - การจัดการการค้นหาข้อความแบบเต็ม.
แอปพลิเคชันที่มีการจัดการ- รายการเมนู เมนูหลัก - ฟังก์ชั่นทั้งหมด - มาตรฐาน -การจัดการการค้นหาข้อความแบบเต็ม
- อัพเดทดัชนี– การสร้างดัชนี/การปรับปรุงดัชนี;
- ล้างดัชนี– ทำให้ดัชนีเป็นศูนย์ (แนะนำหลังจากอัปเดตข้อมูลทั้งหมด)
- รายการ อนุญาตให้รวมดัชนี- รับผิดชอบในการรวมดัชนีหลักและดัชนีเพิ่มเติม
การค้นหาข้อความแบบเต็มดำเนินการโดยใช้ดัชนีข้อความแบบเต็ม ในกรณีที่ไม่มีดัชนี จะไม่สามารถค้นหาข้อความแบบเต็มได้ เพื่อให้การค้นหาประสบความสำเร็จ ต้องรวมข้อมูลที่จำเป็นทั้งหมดไว้ในดัชนีข้อความแบบเต็ม หากผู้ใช้ป้อนข้อมูลใหม่ลงในฐานข้อมูลจะต้องรวมอยู่ในดัชนีที่เป็นปัญหามิฉะนั้นจะไม่เข้าร่วมในการค้นหา เพื่อหลีกเลี่ยงปัญหานี้ คุณต้องอัพเดตดัชนีข้อความแบบเต็ม เมื่ออัปเดต ระบบจะวิเคราะห์ข้อมูลบางประเภทเท่านั้น: สตริง, ข้อมูลประเภทอ้างอิง (ลิงก์ไปยังเอกสาร, ไดเร็กทอรี), ตัวเลข, วันที่, ที่เก็บค่า หากผู้ใช้ไม่มีสิทธิ์ในการเข้าถึงข้อมูลบางอย่าง เขาจะไม่สามารถเห็นข้อมูลนั้นในผลการค้นหาได้ ควรจำไว้ว่าต้องตั้งค่าคุณสมบัติของวัตถุที่จะทำการค้นหา การค้นหาข้อความแบบเต็ม - ใช้ซึ่งถูกกำหนดโดยค่าเริ่มต้น
อย่างที่คุณเห็นคุณสมบัติ ใช้ตั้งค่าสำหรับไดเร็กทอรีทั้งหมด คู่สัญญาแต่ยังสามารถทำได้สำหรับแอตทริบิวต์แต่ละรายการของประเภทที่สอดคล้องกัน
ลองพิจารณารายละเอียดเพิ่มเติมเกี่ยวกับดัชนีข้อความแบบเต็มซึ่งประกอบด้วยสองส่วน (ดัชนี): ดัชนีหลักและส่วนเพิ่มเติม ดัชนีหลักมีความเร็วในการค้นหาข้อมูลสูง แต่การอัปเดตจะค่อนข้างช้า ขึ้นอยู่กับปริมาณข้อมูล ดัชนีเสริมเป็นสิ่งที่ตรงกันข้าม ข้อมูลถูกเพิ่มเข้าไปเร็วกว่ามาก แต่การค้นหาช้าลง ระบบค้นหาดัชนีทั้งสองพร้อมกัน ข้อมูลส่วนใหญ่อยู่ในดัชนีหลัก ในขณะที่ข้อมูลที่เพิ่มลงในระบบจะสิ้นสุดในดัชนีรอง ตราบเท่าที่จำนวนข้อมูลในดัชนีรองมีขนาดเล็ก การค้นหาผ่านข้อมูลนั้นค่อนข้างรวดเร็ว ในเวลาที่โหลดในระบบต่ำ การดำเนินการผสานดัชนีจะเกิดขึ้น ซึ่งเป็นผลมาจากการล้างดัชนีเพิ่มเติม และข้อมูลทั้งหมดจะอยู่ในดัชนีหลัก เป็นการดีกว่าที่จะรวมดัชนีในเวลาที่โหลดในระบบน้อยที่สุด เพื่อจุดประสงค์นี้ คุณสามารถสร้างงานที่มีการควบคุมและงานตามกำหนดการได้
อนุญาตให้ใช้ตัวดำเนินการพิเศษเมื่อระบุนิพจน์การค้นหา
กลไกการค้นหาข้อความแบบเต็มช่วยให้สามารถเขียนส่วนหนึ่งของอักขระของคำภาษารัสเซียด้วยอักขระละตินแบบคีย์เดียว ผลการค้นหาจะไม่เปลี่ยนแปลง
ผู้ประกอบการสองคนเคียงข้างกัน
- ง่าย ห่างกัน 8 คำ
- NEAR/[+/-]n – ค้นหาข้อมูลในแอตทริบิวต์เดียวที่ระยะห่างระหว่าง n-1 คำ
เครื่องหมายบ่งชี้ว่าคำที่สองจะถูกค้นหาไปในทิศทางใดจากคำแรก (+ - หลัง, - ก่อน)
สัญลักษณ์แทน "*" สามารถใช้แทนการสิ้นสุดของคำเท่านั้น
ตัวดำเนินการคลุมเครือ "#" หากไม่ทราบการสะกดชื่อที่ถูกต้อง
เครื่องมือซอฟต์แวร์และเครื่องมือ 1s: การเขียนโปรแกรม
ตัวดำเนินการคำพ้อง "!" ช่วยให้คุณค้นหาคำและคำพ้องความหมาย
จะอัพเดตดัชนีการค้นหาข้อความแบบเต็มโดยทางโปรแกรมได้อย่างไร
รหัส 1C v 8.x ขั้นตอน UpdateIndexes() ส่งออกFulltextSearch.UpdateIndex();
จบขั้นตอน
ตัวอย่างการค้นหาข้อมูลแบบเต็ม
รายการค้นหาคำจำกัดความของตัวแปร
รหัส 1C v 8.x รายการค้นหาตัวแปร;
นอกจากนี้ ในขั้นตอนการประมวลผลเหตุการณ์ เมื่อเปิดแบบฟอร์ม เรากำหนดว่าตัวแปรนี้จะมีรายการค้นหาข้อความแบบเต็ม ซึ่งเราจะค้นหาในข้อมูลด้วยความช่วยเหลือ
รหัส 1C v 8.x ขั้นตอน OnOpen()
SearchList = FullTextSearch.CreateList();
จบขั้นตอน
ทีนี้ในกรณีที่คลิกปุ่ม Find ก็ให้เขียนโค้ดที่จะให้เราค้นหาตามนิพจน์ที่ระบุในช่อง SearchExpression
รหัส 1C v 8.x ขั้นตอน FindClick (องค์ประกอบ)
SearchList.SearchString = SearchExpression;
พยายาม
SearchList.FirstPart();
ข้อยกเว้น
คำเตือน (คำอธิบายข้อผิดพลาด ());
สิ้นสุดความพยายาม
ถ้า SearchList.TotalCount() = 0 แล้ว
FormElements.MessageOResult.Value = "ไม่พบ";
FormElements.SearchResult.SetText("");
มิฉะนั้น
พิมพ์ผลการค้นหา ();
สิ้นสุดถ้า;
จบขั้นตอน
ขั้นแรกในขั้นตอนนี้ เราตั้งค่านิพจน์การค้นหาที่ป้อนโดยผู้ใช้เป็นสตริงการค้นหาสำหรับการค้นหาข้อความแบบเต็ม จากนั้นเราดำเนินการเมธอด FirstPart() ซึ่งเริ่มต้นการค้นหาข้อความแบบเต็มและส่งคืนผลลัพธ์ชุดแรก ตามค่าเริ่มต้น ส่วนหนึ่งประกอบด้วย 20 รายการ หลังจากนั้น เราจะแยกวิเคราะห์จำนวนองค์ประกอบในรายการค้นหา หากไม่มีองค์ประกอบใด ๆ เราจะแสดงข้อความที่เกี่ยวข้องในแบบฟอร์ม มิฉะนั้น โพรซีเดอร์ OutputSearchResult() จะถูกเรียก ซึ่งจะแสดงผลให้ผู้ใช้เห็น
มาสร้างโพรซีเดอร์ด้วยชื่อเดียวกันในฟอร์มโมดูลแล้วเขียนโค้ดลงไป
รหัส 1C v 8.x ขั้นตอน DisplaySearchResult()
FormElements.MessageOResult.Value = "แสดง" + สตริง(SearchList.StartingPosition() + 1) + " - " + สตริง(SearchList.StartingPosition() +SearchList.Count()) + "จาก" + SearchList.FullCount();
ผลลัพธ์ = SearchList.GetDisplay (FullTextSearchDisplayType.HTMLText);
FormElements.SearchResult.SetText (ผลลัพธ์);
ปุ่มช่วยการเข้าถึง ();
จบขั้นตอน
ขั้นตอนในขั้นตอนนี้ง่าย ขั้นแรก เราสร้างข้อความเกี่ยวกับองค์ประกอบที่แสดงและจำนวนองค์ประกอบทั้งหมดที่พบ จากนั้นเราจะได้รับผลการค้นหาข้อความแบบเต็มในรูปแบบของข้อความ HTML และแสดงข้อความนี้ในฟิลด์ของเอกสาร HTML ที่อยู่ในแบบฟอร์ม
สุดท้าย เราถ่ายโอนการควบคุมไปยังขั้นตอน ButtonsAccess() เพื่อให้ใช้งานได้ หรือในทางกลับกัน ห้ามการเข้าถึงปุ่มส่วนก่อนหน้าและส่วนถัดไป (ขึ้นอยู่กับส่วนใดของผลลัพธ์ที่แสดง) ข้อความของขั้นตอนนี้แสดงอยู่ในหลักปฏิบัติ
รหัส 1C v 8.x ขั้นตอนการเข้าถึงปุ่ม ()
FormElements.NextPortion.Availability = (SearchList.FullCount() - SearchList.StartPosition()) > SearchList.Quantity();
FormElements.PreviousPortion.Availability = (SearchList.StartPosition() > 0);
จบขั้นตอน
ตอนนี้คุณต้องสร้างตัวจัดการเหตุการณ์สำหรับการกดปุ่ม PreviousPortion() และ NextPortion()
รหัส 1C v 8.x ขั้นตอน PrevPartPress (องค์ประกอบ)
SearchList.PreviousPart();
พิมพ์ผลการค้นหา ();
จบขั้นตอน
ขั้นตอน NextBatchClick(รายการ)
SearchList.NextPart();
พิมพ์ผลการค้นหา ();
จบขั้นตอน
"สัมผัส" สุดท้ายคือการสร้างตัวจัดการเหตุการณ์สำหรับเหตุการณ์ onclick ของฟิลด์เอกสาร HTML ที่อยู่ในแบบฟอร์ม ความจริงก็คือผลลัพธ์ของการค้นหาข้อความแบบเต็มซึ่งแสดงเป็นข้อความ HTML มีไฮเปอร์ลิงก์ไปยังจำนวนองค์ประกอบของรายการค้นหา และเราต้องการให้ระบบเปิดรูปแบบของวัตถุที่มีอยู่ในองค์ประกอบรายการนี้เมื่อผู้ใช้คลิกที่ลิงค์นี้ ในการทำเช่นนี้ เราจะขัดขวางเหตุการณ์ onclick ของเอกสาร HTML ที่อยู่ในฟิลด์เอกสาร HTML รับหมายเลขรายการจากไฮเปอร์ลิงก์ และเปิดรูปแบบของวัตถุที่เกี่ยวข้อง ข้อความของตัวจัดการเหตุการณ์ onclick ของฟิลด์เอกสาร HTML แสดงในโค้ด
รหัส 1C v 8.x ขั้นตอนการค้นหาผลลัพธ์คลิก (องค์ประกอบ pEvtObj)
htmlElement = pEvtObj.srcElement;
// ตรวจสอบรหัสองค์ประกอบ
ถ้า (htmlElement.id = "FullTextSearchListItem") แล้ว
// รับชื่อไฟล์ (หมายเลขบรรทัดรายการค้นหา),
// อยู่ในไฮเปอร์ลิงก์
NumberInList = Number(htmlElement.nameProp);
// รับสตริงรายการค้นหาตามหมายเลข
SelectedRow = รายการค้นหา [ListNumber];
// เปิดแบบฟอร์มของวัตถุที่พบ
OpenValue(SelectedRow.Value);
pEvtObj.returnValue = เท็จ;
สิ้นสุดถ้า;
จบขั้นตอน
ค้นหาข้อความแบบเต็ม- ช่วยให้คุณค้นหาข้อมูลที่เป็นข้อความซึ่งวางไว้เกือบทุกที่ในการกำหนดค่าที่ใช้ ในเวลาเดียวกัน คุณสามารถค้นหาข้อมูลที่จำเป็นในการกำหนดค่าทั้งหมดโดยรวม หรือโดยการจำกัดพื้นที่การค้นหาให้แคบลงเหลือวัตถุไม่กี่ชิ้น (เช่น เอกสารหรือไดเร็กทอรีบางประเภท) เกณฑ์การค้นหาอาจแตกต่างกันไปในช่วงกว้างพอสมควร นั่นคือคุณสามารถค้นหาข้อมูลที่จำเป็นได้โดยไม่ต้องจำว่าข้อมูลเหล่านั้นถูกเก็บไว้ที่ใดในการกำหนดค่าและบันทึกอย่างไร
การค้นหาข้อความแบบเต็มมีคุณสมบัติดังต่อไปนี้:
- มีการรองรับการทับศัพท์ (เขียนคำภาษารัสเซียด้วยอักขระละตินตาม GOST 7.79-2000) ตัวอย่าง: "วลีภาษารัสเซีย" = "ภาษารัสเซีย fraza"
- มีการรองรับการแทนที่ (เขียนส่วนหนึ่งของอักขระเป็นคำภาษารัสเซียด้วยอักขระละตินแบบคีย์เดียว) ตัวอย่าง: "russrfz frapf" (ส่วนท้ายของแต่ละคำพิมพ์เป็นภาษาละติน เช่น เป็นผลจากข้อผิดพลาดของตัวดำเนินการ)
- มีความเป็นไปได้ในการค้นหาแบบคลุมเครือ (ตัวอักษรในคำที่พบอาจแตกต่างกัน) โดยบ่งชี้ถึงเกณฑ์ความคลุมเครือ ตัวอย่าง: โดยการระบุคำว่า "สวัสดี" ในสตริงการค้นหาและความคลุมเครือ 17% เราจะพบคำที่คล้ายกันทั้งหมดที่มีและไม่มีข้อผิดพลาด: "สวัสดี", "สวัสดี", "นำ"
- สามารถระบุขอบเขตของการค้นหาสำหรับออบเจกต์ข้อมูลเมตาที่เลือกได้
- การทำดัชนีข้อความแบบเต็มของชื่อฟิลด์มาตรฐาน ("รหัส", "คำอธิบาย" ฯลฯ) ดำเนินการในภาษาการกำหนดค่าทั้งหมด
- การค้นหาดำเนินการโดยคำนึงถึงคำพ้องความหมายของภาษารัสเซีย อังกฤษ และยูเครน
- พจนานุกรมสัณฐานวิทยาของภาษารัสเซียมีคำเฉพาะจำนวนหนึ่งที่เกี่ยวข้องกับพื้นที่ของกิจกรรมโดยอัตโนมัติโดยใช้ระบบโปรแกรม 1C: Enterprise
- ตามมาตรฐาน พจนานุกรมที่ให้มาประกอบด้วยฐานข้อมูลคำศัพท์และพจนานุกรมของอรรถาภิธานและคำพ้องความหมายในภาษารัสเซีย ภาษายูเครน และภาษาอังกฤษ ซึ่งจัดทำโดย Informatik
- คุณสามารถค้นหาโดยใช้อักขระตัวแทน ("*") ตลอดจนระบุตัวดำเนินการค้นหา ("AND", "OR", "NOT", "NEAR") และอักขระพิเศษ
การค้นหาข้อความแบบเต็มสามารถทำได้ในการกำหนดค่าใด ๆ บนแพลตฟอร์ม 1C: Enterprise 8
หากต้องการเปิดหน้าต่างควบคุมการค้นหาข้อความแบบเต็ม ให้ทำดังต่อไปนี้:
แอปพลิเคชันทั่วไป- รายการเมนู การดำเนินการ - การจัดการการค้นหาข้อความแบบเต็ม.
แอปพลิเคชันที่มีการจัดการ- รายการเมนู เมนูหลัก - ฟังก์ชั่นทั้งหมด - มาตรฐาน -การจัดการการค้นหาข้อความแบบเต็ม
- อัพเดทดัชนี– การสร้างดัชนี/การปรับปรุงดัชนี;
- ล้างดัชนี– ทำให้ดัชนีเป็นศูนย์ (แนะนำหลังจากอัปเดตข้อมูลทั้งหมด)
- รายการ อนุญาตให้รวมดัชนี- รับผิดชอบในการรวมดัชนีหลักและดัชนีเพิ่มเติม
การค้นหาข้อความแบบเต็มดำเนินการโดยใช้ดัชนีข้อความแบบเต็ม ในกรณีที่ไม่มีดัชนี จะไม่สามารถค้นหาข้อความแบบเต็มได้ เพื่อให้การค้นหาประสบความสำเร็จ ต้องรวมข้อมูลที่จำเป็นทั้งหมดไว้ในดัชนีข้อความแบบเต็ม หากผู้ใช้ป้อนข้อมูลใหม่ลงในฐานข้อมูลจะต้องรวมอยู่ในดัชนีที่เป็นปัญหามิฉะนั้นจะไม่เข้าร่วมในการค้นหา เพื่อหลีกเลี่ยงปัญหานี้ คุณต้องอัพเดตดัชนีข้อความแบบเต็ม เมื่ออัปเดต ระบบจะวิเคราะห์ข้อมูลบางประเภทเท่านั้น: สตริง, ข้อมูลประเภทอ้างอิง (ลิงก์ไปยังเอกสาร, ไดเร็กทอรี), ตัวเลข, วันที่, ที่เก็บค่า หากผู้ใช้ไม่มีสิทธิ์ในการเข้าถึงข้อมูลบางอย่าง เขาจะไม่สามารถเห็นข้อมูลนั้นในผลการค้นหาได้ ควรจำไว้ว่าต้องตั้งค่าคุณสมบัติของวัตถุที่จะทำการค้นหา การค้นหาข้อความแบบเต็ม - ใช้ซึ่งถูกกำหนดโดยค่าเริ่มต้น
อย่างที่คุณเห็นคุณสมบัติ ใช้ตั้งค่าสำหรับไดเร็กทอรีทั้งหมด คู่สัญญาแต่ยังสามารถทำได้สำหรับแอตทริบิวต์แต่ละรายการของประเภทที่สอดคล้องกัน
ลองพิจารณารายละเอียดเพิ่มเติมเกี่ยวกับดัชนีข้อความแบบเต็มซึ่งประกอบด้วยสองส่วน (ดัชนี): ดัชนีหลักและส่วนเพิ่มเติม ดัชนีหลักมีความเร็วในการค้นหาข้อมูลสูง แต่การอัปเดตจะค่อนข้างช้า ขึ้นอยู่กับปริมาณข้อมูล ดัชนีเสริมเป็นสิ่งที่ตรงกันข้าม ข้อมูลถูกเพิ่มเข้าไปเร็วกว่ามาก แต่การค้นหาช้าลง ระบบค้นหาดัชนีทั้งสองพร้อมกัน ข้อมูลส่วนใหญ่อยู่ในดัชนีหลัก ในขณะที่ข้อมูลที่เพิ่มลงในระบบจะสิ้นสุดในดัชนีรอง ตราบเท่าที่จำนวนข้อมูลในดัชนีรองมีขนาดเล็ก การค้นหาผ่านข้อมูลนั้นค่อนข้างรวดเร็ว ในเวลาที่โหลดในระบบต่ำ การดำเนินการผสานดัชนีจะเกิดขึ้น ซึ่งเป็นผลมาจากการล้างดัชนีเพิ่มเติม และข้อมูลทั้งหมดจะอยู่ในดัชนีหลัก เป็นการดีกว่าที่จะรวมดัชนีในเวลาที่โหลดในระบบน้อยที่สุด เพื่อจุดประสงค์นี้ คุณสามารถสร้างงานที่มีการควบคุมและงานตามกำหนดการได้
อนุญาตให้ใช้ตัวดำเนินการพิเศษเมื่อระบุนิพจน์การค้นหา
กลไกการค้นหาข้อความแบบเต็มช่วยให้สามารถเขียนส่วนหนึ่งของอักขระของคำภาษารัสเซียด้วยอักขระละตินแบบคีย์เดียว ผลการค้นหาจะไม่เปลี่ยนแปลง
ผู้ประกอบการสองคนเคียงข้างกัน
- ง่าย ห่างกัน 8 คำ
- NEAR/[+/-]n – ค้นหาข้อมูลในแอตทริบิวต์เดียวที่ระยะห่างระหว่าง n-1 คำ
เครื่องหมายบ่งชี้ว่าคำที่สองจะถูกค้นหาไปในทิศทางใดจากคำแรก (+ - หลัง, - ก่อน)
สัญลักษณ์แทน "*" สามารถใช้แทนการสิ้นสุดของคำเท่านั้น
ตัวดำเนินการคลุมเครือ "#" หากไม่ทราบการสะกดชื่อที่ถูกต้อง
เครื่องมือซอฟต์แวร์และเครื่องมือ 1s: การเขียนโปรแกรม
ตัวดำเนินการคำพ้อง "!" ช่วยให้คุณค้นหาคำและคำพ้องความหมาย
จะอัพเดตดัชนีการค้นหาข้อความแบบเต็มโดยทางโปรแกรมได้อย่างไร
รหัส 1C v 8.x ขั้นตอน UpdateIndexes() ส่งออกFulltextSearch.UpdateIndex();
จบขั้นตอน
ตัวอย่างการค้นหาข้อมูลแบบเต็ม
รายการค้นหาคำจำกัดความของตัวแปร
รหัส 1C v 8.x รายการค้นหาตัวแปร;
นอกจากนี้ ในขั้นตอนการประมวลผลเหตุการณ์ เมื่อเปิดแบบฟอร์ม เรากำหนดว่าตัวแปรนี้จะมีรายการค้นหาข้อความแบบเต็ม ซึ่งเราจะค้นหาในข้อมูลด้วยความช่วยเหลือ
รหัส 1C v 8.x ขั้นตอน OnOpen()
SearchList = FullTextSearch.CreateList();
จบขั้นตอน
ทีนี้ในกรณีที่คลิกปุ่ม Find ก็ให้เขียนโค้ดที่จะให้เราค้นหาตามนิพจน์ที่ระบุในช่อง SearchExpression
รหัส 1C v 8.x ขั้นตอน FindClick (องค์ประกอบ)
SearchList.SearchString = SearchExpression;
พยายาม
SearchList.FirstPart();
ข้อยกเว้น
คำเตือน (คำอธิบายข้อผิดพลาด ());
สิ้นสุดความพยายาม
ถ้า SearchList.TotalCount() = 0 แล้ว
FormElements.MessageOResult.Value = "ไม่พบ";
FormElements.SearchResult.SetText("");
มิฉะนั้น
พิมพ์ผลการค้นหา ();
สิ้นสุดถ้า;
จบขั้นตอน
ขั้นแรกในขั้นตอนนี้ เราตั้งค่านิพจน์การค้นหาที่ป้อนโดยผู้ใช้เป็นสตริงการค้นหาสำหรับการค้นหาข้อความแบบเต็ม จากนั้นเราดำเนินการเมธอด FirstPart() ซึ่งเริ่มต้นการค้นหาข้อความแบบเต็มและส่งคืนผลลัพธ์ชุดแรก ตามค่าเริ่มต้น ส่วนหนึ่งประกอบด้วย 20 รายการ หลังจากนั้น เราจะแยกวิเคราะห์จำนวนองค์ประกอบในรายการค้นหา หากไม่มีองค์ประกอบใด ๆ เราจะแสดงข้อความที่เกี่ยวข้องในแบบฟอร์ม มิฉะนั้น โพรซีเดอร์ OutputSearchResult() จะถูกเรียก ซึ่งจะแสดงผลให้ผู้ใช้เห็น
มาสร้างโพรซีเดอร์ด้วยชื่อเดียวกันในฟอร์มโมดูลแล้วเขียนโค้ดลงไป
รหัส 1C v 8.x ขั้นตอน DisplaySearchResult()
FormElements.MessageOResult.Value = "แสดง" + สตริง(SearchList.StartingPosition() + 1) + " - " + สตริง(SearchList.StartingPosition() +SearchList.Count()) + "จาก" + SearchList.FullCount();
ผลลัพธ์ = SearchList.GetDisplay (FullTextSearchDisplayType.HTMLText);
FormElements.SearchResult.SetText (ผลลัพธ์);
ปุ่มช่วยการเข้าถึง ();
จบขั้นตอน
ขั้นตอนในขั้นตอนนี้ง่าย ขั้นแรก เราสร้างข้อความเกี่ยวกับองค์ประกอบที่แสดงและจำนวนองค์ประกอบทั้งหมดที่พบ จากนั้นเราจะได้รับผลการค้นหาข้อความแบบเต็มในรูปแบบของข้อความ HTML และแสดงข้อความนี้ในฟิลด์ของเอกสาร HTML ที่อยู่ในแบบฟอร์ม
สุดท้าย เราถ่ายโอนการควบคุมไปยังขั้นตอน ButtonsAccess() เพื่อให้ใช้งานได้ หรือในทางกลับกัน ห้ามการเข้าถึงปุ่มส่วนก่อนหน้าและส่วนถัดไป (ขึ้นอยู่กับส่วนใดของผลลัพธ์ที่แสดง) ข้อความของขั้นตอนนี้แสดงอยู่ในหลักปฏิบัติ
รหัส 1C v 8.x ขั้นตอนการเข้าถึงปุ่ม ()
FormElements.NextPortion.Availability = (SearchList.FullCount() - SearchList.StartPosition()) > SearchList.Quantity();
FormElements.PreviousPortion.Availability = (SearchList.StartPosition() > 0);
จบขั้นตอน
ตอนนี้คุณต้องสร้างตัวจัดการเหตุการณ์สำหรับการกดปุ่ม PreviousPortion() และ NextPortion()
รหัส 1C v 8.x ขั้นตอน PrevPartPress (องค์ประกอบ)
SearchList.PreviousPart();
พิมพ์ผลการค้นหา ();
จบขั้นตอน
ขั้นตอน NextBatchClick(รายการ)
SearchList.NextPart();
พิมพ์ผลการค้นหา ();
จบขั้นตอน
"สัมผัส" สุดท้ายคือการสร้างตัวจัดการเหตุการณ์สำหรับเหตุการณ์ onclick ของฟิลด์เอกสาร HTML ที่อยู่ในแบบฟอร์ม ความจริงก็คือผลลัพธ์ของการค้นหาข้อความแบบเต็มซึ่งแสดงเป็นข้อความ HTML มีไฮเปอร์ลิงก์ไปยังจำนวนองค์ประกอบของรายการค้นหา และเราต้องการให้ระบบเปิดรูปแบบของวัตถุที่มีอยู่ในองค์ประกอบรายการนี้เมื่อผู้ใช้คลิกที่ลิงค์นี้ ในการทำเช่นนี้ เราจะขัดขวางเหตุการณ์ onclick ของเอกสาร HTML ที่อยู่ในฟิลด์เอกสาร HTML รับหมายเลขรายการจากไฮเปอร์ลิงก์ และเปิดรูปแบบของวัตถุที่เกี่ยวข้อง ข้อความของตัวจัดการเหตุการณ์ onclick ของฟิลด์เอกสาร HTML แสดงในโค้ด
รหัส 1C v 8.x ขั้นตอนการค้นหาผลลัพธ์คลิก (องค์ประกอบ pEvtObj)
htmlElement = pEvtObj.srcElement;
// ตรวจสอบรหัสองค์ประกอบ
ถ้า (htmlElement.id = "FullTextSearchListItem") แล้ว
// รับชื่อไฟล์ (หมายเลขบรรทัดรายการค้นหา),
// อยู่ในไฮเปอร์ลิงก์
NumberInList = Number(htmlElement.nameProp);
// รับสตริงรายการค้นหาตามหมายเลข
SelectedRow = รายการค้นหา [ListNumber];
// เปิดแบบฟอร์มของวัตถุที่พบ
OpenValue(SelectedRow.Value);
pEvtObj.returnValue = เท็จ;
สิ้นสุดถ้า;
จบขั้นตอน
กลไกการค้นหาข้อความแบบเต็มใน 1Cช่วยให้คุณค้นหาข้อมูลที่ต้องการได้อย่างรวดเร็ว การค้นหาประเภทนี้จะมีประสิทธิภาพโดยเฉพาะอย่างยิ่งหากฐานข้อมูลมีข้อมูลจำนวนมาก และยังไม่ทราบแน่ชัดว่าข้อมูลใดที่ผู้ใช้สนใจนั้นอยู่ที่ใด หรือมักจะเกิดขึ้น คือไม่ทราบชื่อที่แน่นอน ในการเปิดหน้าต่างควบคุมการค้นหาข้อความแบบเต็ม ให้ทำดังต่อไปนี้: รายการเมนู การดำเนินงาน การจัดการการค้นหาข้อความแบบเต็ม .
มีสามปุ่มในหน้าต่างนี้: การตั้งค่า - เปิด/ปิดการค้นหาข้อความแบบเต็ม;
อัพเดทดัชนี – การสร้างดัชนี/การปรับปรุงดัชนี; ล้างดัชนี – ทำให้ดัชนีเป็นศูนย์ (แนะนำหลังจากอัปเดตข้อมูลทั้งหมด) ย่อหน้า อนุญาตให้รวมดัชนี – มีหน้าที่รับผิดชอบในการรวมดัชนีหลักและรอง
การค้นหาข้อความแบบเต็มดำเนินการโดยใช้ดัชนีข้อความแบบเต็ม ในกรณีที่ไม่มีดัชนี จะไม่สามารถค้นหาข้อความแบบเต็มได้ เพื่อให้การค้นหาประสบความสำเร็จ ต้องรวมข้อมูลที่จำเป็นทั้งหมดไว้ในดัชนีข้อความแบบเต็ม หากผู้ใช้ป้อนข้อมูลใหม่ลงในฐานข้อมูลจะต้องรวมอยู่ในดัชนีที่เป็นปัญหามิฉะนั้นจะไม่เข้าร่วมในการค้นหา เพื่อหลีกเลี่ยงปัญหานี้ คุณต้องอัพเดตดัชนีข้อความแบบเต็ม เมื่ออัปเดต ระบบจะวิเคราะห์ข้อมูลบางประเภทเท่านั้น: สตริง ข้อมูลอ้างอิง (ลิงค์เอกสารคู่มือ) ตัวเลข วันที่ StorageValues. หากผู้ใช้ไม่มีสิทธิ์ในการเข้าถึงข้อมูลบางอย่าง เขาจะไม่สามารถเห็นข้อมูลนั้นในผลการค้นหาได้ ควรจำไว้ว่าต้องตั้งค่าคุณสมบัติของวัตถุที่จะทำการค้นหา การค้นหาข้อความแบบเต็ม - ใช้ซึ่งถูกกำหนดโดยค่าเริ่มต้น
อย่างที่คุณเห็นคุณสมบัติ ใช้ ตั้งค่าสำหรับไดเร็กทอรีทั้งหมด RegNumbers แต่ยังสามารถทำได้สำหรับแอตทริบิวต์แต่ละรายการของประเภทที่สอดคล้องกัน
มาดูดัชนีแบบเต็มซึ่งประกอบด้วยสองส่วน (ดัชนี): ดัชนีหลักและเพิ่มเติม . ดัชนีหลักมีความเร็วในการค้นหาข้อมูลสูง แต่การอัปเดตจะค่อนข้างช้า ขึ้นอยู่กับปริมาณข้อมูล ดัชนีเสริมเป็นสิ่งที่ตรงกันข้าม ข้อมูลถูกเพิ่มเข้าไปเร็วกว่ามาก แต่การค้นหาช้าลง ระบบค้นหาดัชนีทั้งสองพร้อมกัน ข้อมูลส่วนใหญ่อยู่ในดัชนีหลัก ในขณะที่ข้อมูลที่เพิ่มลงในระบบจะสิ้นสุดในดัชนีรอง ตราบเท่าที่จำนวนข้อมูลในดัชนีรองมีขนาดเล็ก การค้นหาผ่านข้อมูลนั้นค่อนข้างรวดเร็ว ในเวลาที่โหลดในระบบต่ำ การดำเนินการผสานดัชนีจะเกิดขึ้น ซึ่งเป็นผลมาจากการล้างดัชนีเพิ่มเติม และข้อมูลทั้งหมดจะอยู่ในดัชนีหลัก เป็นการดีกว่าที่จะรวมดัชนีในเวลาที่โหลดในระบบน้อยที่สุด เพื่อจุดประสงค์นี้ คุณสามารถสร้างงานที่มีการควบคุมและงานตามกำหนดการได้
ลองพิจารณากรณีของการอัพเดตดัชนีอัตโนมัติเมื่อเริ่มต้นแอปพลิเคชัน กรณีนี้เหมาะสำหรับฐานข้อมูลผู้ใช้คนเดียว (ฐานข้อมูลผู้ใช้คนเดียวอาจเป็นผลิตภัณฑ์เช่น พื้นฐานการบัญชี 1C, 1C แบบง่าย) เนื่องจากมีผู้ใช้จำนวนมาก การอัปเดตจะเกิดขึ้นหลังจากการเปิดตัวแอปพลิเคชันของผู้ใช้แต่ละคน ซึ่งจะส่งผลอย่างมากต่อประสิทธิภาพของระบบ
ก่อนอื่นมาสร้างโมดูลทั่วไปและเรียกมันว่า พี.พี. เราเขียนขั้นตอนต่อไปนี้ในนั้น:
ขั้นตอน UpdateIndexes() ส่งออก
FulltextSearch.UpdateIndex();
จบขั้นตอน
เพียงกำหนดคุณสมบัติตามรูป
จากนั้นคลิกขวาที่ชื่อคอนฟิกูเรชันในทรีคอนฟิกูเรชันแล้วรันคำสั่ง เปิดโมดูลแอปพลิเคชันที่มีการจัดการ เลือกฟังก์ชันที่กำหนดไว้ล่วงหน้าในหน้าต่างขนาดเล็กด้านบน ก่อนเริ่มระบบ และใส่บรรทัดต่อไปนี้ในขั้นตอนนี้:
UpdateFullTextSearch.UpdateIndexes();
เราบันทึกการเปลี่ยนแปลงที่เกิดขึ้น ดังนั้น หลังจากเปิดแอปพลิเคชันแต่ละครั้ง ดัชนีจะได้รับการอัปเดตโดยอัตโนมัติ
ตอนนี้ให้พิจารณากรณีที่มีผู้ใช้หลายคน ที่นี่เราใช้ งานด้านกฎระเบียบ (ในโหมดตัวกำหนดค่า: ในแผนผังการกำหนดค่า - งานทั่วไป - งานกำกับดูแล).ในกรณีนี้ เราสนใจเพียงสองงาน: UpdateFullTextSearchIndex และ MergeFullTextSearchIndexในคุณสมบัติของงานเหล่านี้ เลือก กำหนดการและคลิกที่ลิงค์ เปิด.
กำหนดตารางเวลาสำหรับทั้งสองงาน ในกรณีนี้ ไม่มีคำแนะนำในการตั้งค่า การตั้งค่าจะพิจารณาจากคุณสมบัติของการทำงานของระบบ (โหลด จำนวนข้อมูล ความถี่ของการอัปเดต ฯลฯ) งานจะไม่ทำงานเราจะต้องมีเซสชันโปรแกรมที่กำลังทำงานอยู่ในโหมด รัฐวิสาหกิจใครจะเป็นผู้รับผิดชอบงานเหล่านี้ ควรสังเกตทันทีว่าตัวเลือกนี้ใช้สำหรับระบบไฟล์ การประมวลผลการรอจะต้องทำงานในเซสชันนี้ ดำเนินการเรียกเมธอด 1 ภาษา การประมวลผลนี้จะมีลักษณะดังนี้:
เปลี่ยนเป็นโหมด Enterprise แล้วทำดังต่อไปนี้: เรียกใช้การประมวลผลของเรา ซึ่งในกรณีนี้จะถูกเรียกทุกๆ 5 วินาที และเรียกเมธอด “ExecuteJobProcessing()” วิธีนี้ตรวจสอบว่าถึงเวลาที่ต้องดำเนินงานตามกำหนดเวลาหรือไม่ จากนั้นไปที่รายการเมนู การดำเนินการ - ค่าคงที่ - การตั้งค่าโปรแกรม - แท็บการแลกเปลี่ยนข้อมูล
กำหนดเซสชันผู้ใช้ที่จะรับผิดชอบการดำเนินการและกำหนดช่วงเวลาการสำรวจสำหรับงานที่กำหนดเวลาไว้ ไม่แนะนำให้ทำงานในเซสชันนี้ เนื่องจากอาจส่งผลต่อประสิทธิภาพของระบบ นอกจากนี้ในดิสก์ ITS ยังมีการประมวลผล " เปิดตัวงานประจำ” ซึ่งบังคับให้มีการเรียกใช้งานตามกำหนดเวลาตามที่ผู้ใช้เลือก รูปแบบของการประมวลผลนี้มีดังนี้:
ดังนั้นงานเตรียมการทั้งหมดจึงเสร็จสมบูรณ์และคุณสามารถดำเนินการค้นหาข้อมูลได้โดยตรง
ในการเริ่มทำงานกับการค้นหาข้อความแบบเต็ม คุณต้องใช้คำสั่งต่อไปนี้: เมนู บริการ à ค้นหาข้อมูล.
จากนั้นหน้าต่างต่อไปนี้จะปรากฏขึ้น:
คลิกที่ปุ่ม การตั้งค่าฟิลด์ที่มีการตั้งค่าเพิ่มเติมจะปรากฏขึ้น เช่น: การจำกัดขอบเขตการค้นหา, ความคลุมเครือ, ขนาดที่ให้บริการ(ในกรณีนี้ ค่า = 5 ซึ่งหมายถึงผลการค้นหา 5 รายการต่อหน้า) พารามิเตอร์ ความคลุมเครือบ่งชี้ความไม่ตรงกันระหว่างอักขระบางตัวในคำค้นหาและข้อมูลที่ได้รับระหว่างการค้นหา ความคลุมเครือกำหนดเป็นเปอร์เซ็นต์
การค้นหาข้อความแบบเต็มสามารถใช้ตัวดำเนินการต่อไปนี้:
นอกจากนี้ กลไกการค้นหาข้อความแบบเต็มยังช่วยให้สามารถเขียนอักขระบางตัวของคำภาษารัสเซียเป็นอักขระละตินแบบคีย์เดียวได้ ผลการค้นหาจะไม่เปลี่ยนแปลง
ในเวอร์ชันไคลเอ็นต์เซิร์ฟเวอร์ ตัวกำหนดตารางเวลางานมีหน้าที่รับผิดชอบในการจัดตารางเวลาการปฏิบัติงาน
ตัวกำหนดเวลางานเป็นส่วนประกอบที่ใช้งานอยู่ของเซิร์ฟเวอร์ เช่น ไม่ว่าจะมีการเชื่อมต่อไคลเอนต์กับเซิร์ฟเวอร์หรือไม่ ก็สามารถดำเนินการตามกำหนดเวลาได้ กิจกรรมของตัวกำหนดตารางเวลาจะสังเกตเห็นได้ชัดเจนเป็นพิเศษเมื่อทำการสำรวจฐานข้อมูลทั้งหมดตามลำดับสำหรับการมีงานตามกำหนดเวลาในฐานข้อมูลเหล่านั้น ตัวกำหนดตารางเวลาสามารถเลื่อนการสำรวจฐานข้อมูลเฉพาะได้ หากฐานข้อมูลมีบล็อกการเชื่อมต่อหรือบล็อกงานที่กำหนดเวลาไว้
รายการปัจจุบันของงานที่กำหนดเวลาไว้ในตัวกำหนดตารางเวลาสามารถเปลี่ยนแปลงได้โดยอัตโนมัติ (เช่น เมื่อมีการสร้างงานที่กำหนดเวลาใหม่หรืองานที่กำหนดเวลาไว้ถูกลบ) ไม่ว่าในกรณีใด กลไกงานจะทำให้แน่ใจว่ารายการงานตามกำหนดเวลาของตัวจัดกำหนดการเป็นปัจจุบันและตรงกับรายการของงานที่จัดกำหนดการไว้ในฐานข้อมูลคลัสเตอร์
หลังจากได้รับรายการเริ่มต้นของงานตามกำหนดเวลาสำเร็จแล้ว ตัวกำหนดตารางเวลาจะตรวจสอบเป็นระยะเพื่อดูว่ามีการร้องขอให้รันงานเบื้องหลังหรือไม่ และจำเป็นต้องดำเนินการตามกำหนดเวลาหรือไม่ หลังจากที่เวิร์กโฟลว์ได้รับงานแล้ว เวิร์กโฟลว์จะสร้างการเชื่อมต่อกับฐานข้อมูลและดำเนินการงานภายในการเชื่อมต่อนี้ เนื่องจากเวิร์กโฟลว์ได้รับการปรับให้เหมาะสมสำหรับงานที่มีผู้ใช้หลายคน การสร้างการเชื่อมต่อฐานข้อมูลครั้งแรกเท่านั้นจึงเป็นการดำเนินการที่มีค่าใช้จ่ายสูง การสร้างการเชื่อมต่อในภายหลังไปยังฐานข้อมูลเดียวกันจะใช้เวลาและทรัพยากรน้อยลงอย่างมาก เนื่องจาก โครงสร้างข้อมูลภายในส่วนใหญ่ใช้ร่วมกันระหว่างการเชื่อมต่อของฐานข้อมูลเดียวกัน หลังจากรันงานแล้ว เวิร์กโฟลว์จะแจ้งให้ตัวจัดกำหนดการทราบถึงความสำเร็จหรือความล้มเหลวของงาน ในกรณีที่ซอฟต์แวร์ล้มเหลว ตัวกำหนดตารางเวลาสามารถเริ่มงานตามกำหนดเวลาใหม่ได้ (หากความล้มเหลวเกิดขึ้นขณะเรียกใช้งานเบื้องหลัง งานจะไม่เริ่มต้นใหม่)
ขอบคุณ!