ปัญหา: จำเป็นต้องเรียกใช้การค้นหาของฉันเองโดยทางโปรแกรมด้วย Search API ผลการค้นหา google ทุกอันนั้นมุ่งเน้นไปที่การสอนผู้ที่ไม่ใช่นักพัฒนาวิธีการใช้โมดูลด้วย Views โดยไม่มีผลลัพธ์ในการทำอย่างที่ฉันต้องการ
ข้อมูล:
- การใช้บริการฐานข้อมูลท้องถิ่นแทน Solr หรืออื่น ๆ
- มีข้อมูลที่ไม่ได้เก็บไว้ในฐานข้อมูลที่จะปรากฏพร้อมกับผลลัพธ์อื่น ๆ
- เนื้อหาจะถูกจัดกลุ่มในแท็บ "ประเภท"
- ไม่ได้ใช้ Views ด้วยเหตุผลต่างๆ
- เปิดใช้งาน Facets API แล้ว แต่ไม่มีเงื่อนงำว่าจะใช้งานอย่างไร
ทำไม: เพราะฉันต้องการให้หน้าการค้นหาอยู่ที่ / site-search และไม่มี / node / keyword หลังจากอาร์กิวเมนต์ของหน้า จะถูกขอให้ปรับแต่งสิ่งนี้นอกเหนือจากขอบเขตของโมดูลอื่นที่อาจมีฟังก์ชั่นประเภทเดียวกัน และฉันต้องการเรียนรู้วิธีการทำเช่นนี้ แต่ไม่พบบทเรียนหรือความเข้าใจอื่น ๆ เกี่ยวกับวิธีการทำให้สำเร็จ
ส่วนที่เหลือ: ฉันได้สร้างหน้าการค้นหาของฉันและฉันกำลังดำเนินการค้นหาด้วย:
$term = $_SESSION['my-search']['term'];
$server = search_api_server_load('database');
$index = search_api_index_load('default_node_index');
$query = new SearchApiQuery($index);
$query->keys($term);
$query->fields(array('title','body:value'));
$srv= new SearchApiDbService($server);
$result = $srv->search($query);
ตัวแปรเซสชั่นถูกตั้งค่าเมื่อมีการส่งแบบฟอร์มการค้นหาแล้วเปลี่ยนเส้นทางผู้ใช้ไปยัง / site-search เพื่อทำการค้นหาและแสดงผลลัพธ์
ถ้าฉันส่งผลลัพธ์ $ ผลลัพธ์ฉันเห็นว่ามันเป็นอาร์เรย์ที่มีข้อมูลที่แตกต่างกันรวมถึงชุดผลลัพธ์ที่เป็นอาร์เรย์ของรหัสโหนดและคะแนนของพวกเขา
ฉันสามารถวิ่งผ่านสิ่งเหล่านั้นคว้าโหนดและแสดงผลลัพธ์เอง แต่ฉันคิดว่าต้องมีวิธีอื่นในการแสดงผลลัพธ์ของการค้นหา ฉันไม่พบมันและนั่นเป็นปัญหา
ฉันได้ดูคลาสที่แตกต่างกันใน Search API และ Facet API และไม่พบสิ่งใดในพวกเขาที่ดูเหมือนว่าพวกเขาจะสร้างผลลัพธ์ผลลัพธ์
ความช่วยเหลือเกี่ยวกับสิ่งนี้จะได้รับการชื่นชม
ตัวอย่างผลลัพธ์:
Array
(
[result count] => 11
[results] => Array
(
[37] => Array
(
[id] => 37
[score] => 15.7503318786621
)
[39] => Array
(
[id] => 39
[score] => 7
)
[40] => Array
(
[id] => 40
[score] => 5
)
[31] => Array
(
[id] => 31
[score] => 4
)
[33] => Array
(
[id] => 33
[score] => 1
)
[36] => Array
(
[id] => 36
[score] => 1
)
[1] => Array
(
[id] => 1
[score] => 1
)
[15] => Array
(
[id] => 15
[score] => 1
)
[16] => Array
(
[id] => 16
[score] => 1
)
[27] => Array
(
[id] => 27
[score] => 1
)
[35] => Array
(
[id] => 35
[score] => 0.980873763561249
)
)
[warnings] => Array
(
)
[ignored] => Array
(
)
[performance] => Array
(
[complete] => 0.0033111572265625
[preprocessing] => 0.00053095817565918
[execution] => 0.0027379989624023
[postprocessing] => 4.2200088500977E-5
)
)