คอมพิวเตอร์ หน้าต่าง อินเทอร์เน็ต

เครื่องมือค้นหาข้อความแบบเต็ม (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

ตัวอย่าง

SearchList = FullTextSearch.CreateList("", 20); SearchList.GetDescription = จริง;

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 รายการต่อหน้า) พารามิเตอร์ ความคลุมเครือบ่งชี้ความไม่ตรงกันระหว่างอักขระบางตัวในคำค้นหาและข้อมูลที่ได้รับระหว่างการค้นหา ความคลุมเครือกำหนดเป็นเปอร์เซ็นต์

การค้นหาข้อความแบบเต็มสามารถใช้ตัวดำเนินการต่อไปนี้:

นอกจากนี้ กลไกการค้นหาข้อความแบบเต็มยังช่วยให้สามารถเขียนอักขระบางตัวของคำภาษารัสเซียเป็นอักขระละตินแบบคีย์เดียวได้ ผลการค้นหาจะไม่เปลี่ยนแปลง

ในเวอร์ชันไคลเอ็นต์เซิร์ฟเวอร์ ตัวกำหนดตารางเวลางานมีหน้าที่รับผิดชอบในการจัดตารางเวลาการปฏิบัติงาน

ตัวกำหนดเวลางานเป็นส่วนประกอบที่ใช้งานอยู่ของเซิร์ฟเวอร์ เช่น ไม่ว่าจะมีการเชื่อมต่อไคลเอนต์กับเซิร์ฟเวอร์หรือไม่ ก็สามารถดำเนินการตามกำหนดเวลาได้ กิจกรรมของตัวกำหนดตารางเวลาจะสังเกตเห็นได้ชัดเจนเป็นพิเศษเมื่อทำการสำรวจฐานข้อมูลทั้งหมดตามลำดับสำหรับการมีงานตามกำหนดเวลาในฐานข้อมูลเหล่านั้น ตัวกำหนดตารางเวลาสามารถเลื่อนการสำรวจฐานข้อมูลเฉพาะได้ หากฐานข้อมูลมีบล็อกการเชื่อมต่อหรือบล็อกงานที่กำหนดเวลาไว้

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

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

ขอบคุณ!