Score:0

การเรียงลำดับในฟิลด์วันที่ที่กำหนดเองนั้นช้ากว่าการเรียงลำดับตามความเกี่ยวข้อง: มีวิธีแก้ไขหรือไม่?

ธง pe

ฉันใช้ API การค้นหากับแบ็กเอนด์ฐานข้อมูลบนไซต์ Drupal 9.3.3 ฉันได้จัดทำดัชนี 26,000 โหนดของประเภทเนื้อหาที่กำหนดเอง ซึ่งรวมถึงฟิลด์วันที่ที่กำหนดเอง: field_display_date

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

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

ปัญหา: เมื่อดูการตั้งค่าทั้งหมดแล้ว ให้ป้อนคำค้นหาว่าดำเนินการ ด้วยการตั้งค่าการจัดเรียงเป็นค่าเริ่มต้น 'ความเกี่ยวข้อง' การส่งคืนจึงค่อนข้างรวดเร็ว หากฉันเปลี่ยนการจัดเรียงเป็น 'วันที่' (field_display_date: มากไปหาน้อย) และส่งอีกครั้ง จะมีเวลารอนานมาก ซึ่งมักจะหมดเวลาของเกตเวย์

ในอันที่ไม่หมดเวลา view sql และการลดประสิทธิภาพบอกว่านี่...

สอบถาม   
ดัชนี: main2
คีย์: 'ทดสอบ'
คีย์แยกวิเคราะห์: อาร์เรย์ (
    '#conjunction' => 'และ',
    0 => 'ทดสอบ',
  )
ฟิลด์ที่ค้นหา: rendered_item, ชื่อเรื่อง
การเรียงลำดับ: field_display_date DESC
ตัวเลือก: อาร์เรย์ (
    'search_api_view' => 'วัตถุ (Drupal\views\ViewExecutable)',
    'search_api_base_path' => 'ค้นหา2',
  )
การค้นหาชื่อเรื่อง2
เส้นทาง /search2
เวลาในการสร้างแบบสอบถาม 1.43 ms
เวลาดำเนินการแบบสอบถาม 2.81 ms
ดูเวลาเรนเดอร์ 43237.89 ms

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

ในทางตรงกันข้าม นี่คือมุมมองและดัชนีเดียวกัน และคำค้นหาที่จัดเรียงตามความเกี่ยวข้อง...

สอบถาม   
ดัชนี: main2
คีย์: 'ทดสอบ'
คีย์แยกวิเคราะห์: อาร์เรย์ (
    '#conjunction' => 'และ',
    0 => 'ทดสอบ',
  )
ฟิลด์ที่ค้นหา: rendered_item, ชื่อเรื่อง
การเรียงลำดับ: search_api_relevance DESC
ตัวเลือก: อาร์เรย์ (
    'search_api_view' => 'วัตถุ (Drupal\views\ViewExecutable)',
    'search_api_base_path' => 'ค้นหา2',
  )
การค้นหาชื่อเรื่อง2
เส้นทาง /search2
เวลาในการสร้างแบบสอบถาม 1.23 ms
เวลาดำเนินการแบบสอบถาม 2.68 ms
ดูเวลาเรนเดอร์ 2990.91 ms

สิ่งนี้ดูเหมือนจะแนะนำว่าการค้นหาเองและรับผลลัพธ์นั้นค่อนข้างรวดเร็ว แต่ด้วยเหตุผลบางอย่างที่โหลดหน้าเว็บช้ามาก?

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

ตัวกรองมุมมองธรรมดาที่ไม่มีดัชนี เรียงตาม field_display_date จากมากไปน้อย ค้นหาฟิลด์เนื้อหาสำหรับคำหลักเดียวกัน...

ชื่อเรื่อง เนื้อหา
พาธ /admin/content/node2
เวลาในการสร้างแบบสอบถาม 3.23 ms
เวลาดำเนินการแบบสอบถาม 1.2 ms
ดูเวลาเรนเดอร์ 6291.28 ms
sonfd avatar
in flag
การจัดเรียงวันที่ของคุณใช้ข้อมูลวันที่จากดัชนีของคุณหรือไม่ หรือเพียงแค่ฟิลด์วันที่ปกติ? ตรวจสอบว่าคุณใช้ข้อมูลฟิลด์วันที่จัดทำดัชนี
pe flag
เป็นฟิลด์วันที่จัดทำดัชนี รายละเอียดอื่นๆ จากการวิเคราะห์จนถึงตอนนี้: เวลาในการเรนเดอร์มักจะแย่ลงหากฉันค้นหาโดยจัดเรียงความเกี่ยวข้องในตัวกรองที่เปิดเผยก่อน แล้วจึงเปลี่ยนเป็นวันที่และนำไปใช้ จนถึงตอนนี้ ขั้นตอนชุดนั้นดูเหมือนจะแย่กว่าการค้นหาด้วยวันที่ในเมนูแบบเลื่อนลงก่อน แต่ฉันไม่ค่อยมั่นใจในเรื่องนั้น นอกจากนี้: จำนวนการเข้าชมทั้งหมดมีผลกระทบอย่างมาก มากกว่า = แสดงผลนานขึ้น อาจช่วยให้ทราบ: มุมมองไม่มีการอ้างอิงเอนทิตีถึงสิ่งที่ทำงานช้า
pe flag
เงื่อนงำอื่น: หากฉันใช้ 'rendered html' ในตัวกรองที่เปิดเผยแทน 'การค้นหาข้อความแบบเต็ม' ผลลัพธ์ที่จัดเรียงตามฟิลด์วันที่ที่กำหนดเอง (จัดทำดัชนี) จะเร็วกว่ามาก ตัวกรอง html ที่แสดงผลไม่ได้เสนอการเรียงลำดับความเกี่ยวข้อง บางทีฉันอาจต้องตั้งค่าเริ่มต้นเป็น 'การเรียงลำดับความเกี่ยวข้อง & ข้อความแบบเต็ม' แต่มีปุ่มเพื่อกำหนดเส้นทางข้อความค้นหาไปที่ 'การเรียงลำดับวันที่ & การแสดงผล html' อยากจะเข้าใจว่าทำไมสิ่งนี้ถึงเกิดขึ้น
pe flag
อาจเกี่ยวข้องกับปัญหานี้: https://www.drupal.org/project/search_api/issues/3227268 การสนทนาส่วนใหญ่อยู่นอกเหนือระดับความเชี่ยวชาญในปัจจุบันของฉัน ดังนั้นฉันจึงไม่แน่ใจเกี่ยวกับความเกี่ยวข้อง
Score:0
ธง pe

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

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

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

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา