CompleteSearch เป็นเครื่องมือค้นหาแบบโต้ตอบที่รวดเร็วสำหรับ การค้นหาคำนำหน้าตามบริบทในคอ ลเลกชันเอกสารที่กำหนด ไม่เพียงแต่ให้ผลการค้นหา เช่น เสิร์ชเอ็นจิ้นทั่วไปเท่านั้น แต่ยังช่วยเติมคำค้นหาสุดท้าย (อาจพิมพ์เพียงบางส่วนเท่านั้น) ที่นำไปสู่การเข้าชมอีกด้วย ซึ่งสามารถใช้เพื่อให้การสนับสนุนฟีเจอร์ต่างๆ ได้อย่างมีประสิทธิภาพ เช่น การเติมคำค้นหาอัตโนมัติ การค้นหาแบบ faceted การค้นหาคำพ้องความหมาย การค้นหาที่ทนต่อข้อผิดพลาด การค้นหาเชิงความหมาย รายการสิ่งพิมพ์เกี่ยวกับเทคนิคเบื้องหลัง CompleteSearch และแอปพลิเคชันต่างๆ มีให้ที่ส่วนท้ายของหน้านี้
สำหรับการสาธิตชุดข้อมูลต่างๆ เพียงชำระเงินที่เก็บข้อมูลนี้แล้วทำตามคำแนะนำด้านล่าง ด้วยบรรทัดคำสั่งเดียว คุณจะได้รับสาธิตการทำงาน (คุณสามารถเลือกจากชุดข้อมูลหลายชุด ซึ่งแต่ละชุดมีขนาดเท่ากับเอกสารหลายล้านฉบับ ดังนั้นจึงมีขนาดไม่ใหญ่นัก แต่ก็ไม่เล็กด้วย) CompleteSearch ปรับขนาดเป็นคอลเลกชันที่มีเอกสารนับสิบหรือหลายร้อยล้านรายการโดยไม่สูญเสียการโต้ตอบ
ชำระเงินที่เก็บและสร้างอิมเมจนักเทียบท่า
git clone https://github.com/ad-freiburg/completesearch
cd completesearch
docker build -t completesearch .
บรรทัดคำสั่งต่อไปนี้จะสร้างดัชนีการค้นหา จากนั้นเริ่มเซิร์ฟเวอร์การค้นหาสำหรับชุดข้อมูลที่ระบุผ่านตัวแปร DB
(ชื่อของไดเร็กทอรีย่อยของแอปพลิเคชันใช้งานได้) ภายใต้ PORT
ที่ระบุ คุณจะมี UI ทั่วไป เช่นเดียวกับ API (ดูส่วนที่ 4 ด้านล่าง)
export DB=movies && PORT=1622 && docker run -it --rm -e DB=${DB} -p ${PORT}:8080 -v $(pwd)/applications:/applications -v $(pwd)/data/:/data -v $(pwd)/ui:/ui --name completesearch.${DB} completesearch -c "make DATA_DIR=/data/${DB} DB=${DB} csv pall start"
บรรทัดคำสั่งนี้จะดาวน์โหลดและคลายการบีบอัด CSV สร้างดัชนี และเริ่มต้นเซิร์ฟเวอร์ ทั้งหมดในครั้งเดียว หากคุณดาวน์โหลด CSV แล้ว ไฟล์นั้นจะไม่ถูกดาวน์โหลดอีก (Makefile target csv:
จากนั้นจะไม่มีผลใดๆ) หากคุณได้สร้างดัชนีไว้แล้วครั้งหนึ่ง คุณสามารถละเว้น Makefile target pall:
(ซึ่งย่อมาจาก precompute all)
อ่านหัวข้อนี้หากคุณต้องการทำความเข้าใจให้ลึกซึ้งยิ่งขึ้นว่าเกิดอะไรขึ้นกับบรรทัดคำสั่งด้านบน ขั้นแรกบรรทัดคำสั่งจะสร้างอิมเมจนักเทียบท่าจากโค้ดในที่เก็บนี้ จนถึงตอนนี้ดีมาก จากนั้นจะเรียกใช้คอนเทนเนอร์นักเทียบท่าซึ่งติดตั้งสามวอลุ่ม ซึ่งเราจะอธิบายสั้น ๆ ต่อไป:
แอปพลิเคชัน โฟลเดอร์นี้ประกอบด้วยการกำหนดค่าสำหรับแต่ละแอปพลิเคชัน การกำหนดค่าแต่ละรายการมีเพียงสองไฟล์เท่านั้น Makefile
ที่ระบุวิธีการสร้างดัชนี (ปรับแต่งได้สูง ดูด้านล่าง) และ config.js
สำหรับปรับแต่ง UI ทั่วไป
data โฟลเดอร์นี้ประกอบด้วยไฟล์ CSV พร้อมด้วยข้อมูลต้นฉบับ (หนึ่งบันทึกต่อบรรทัดในคอลัมน์) และไฟล์ดัชนี พวกเขาทั้งหมดมีคำนำหน้าเหมือนกัน ดูด้านล่างสำหรับข้อมูลเพิ่มเติมเกี่ยวกับดัชนี
ui โฟลเดอร์นี้มีโค้ดสำหรับ UI ทั่วไป หากคุณเพียงต้องการใช้ CompleteSearch เป็นแบ็กเอนด์และสร้าง UI ของคุณเอง คุณไม่จำเป็นต้องเมานต์วอลุ่มนี้ อย่างไรก็ตาม การมี UI ที่ใช้งานได้สำหรับการทดสอบอยู่เสมอถือเป็นเรื่องดี โดยไม่ต้องทำงานเพิ่มเติมใดๆ
เช่นเดียวกับเสิร์ชเอ็นจิ้นอื่นๆ CompleteSearch จะสร้างดัชนีซึ่งสามารถตอบคำถามได้อย่างมีประสิทธิภาพ ไม่ใช่ดัชนีกลับหัวธรรมดา แต่เป็นดัชนีที่แปลกกว่า: ดัชนีแบบกลับครึ่งหรือดัชนี ไฮเบิร์ด (HYB) คุณไม่จำเป็นต้องเข้าใจสิ่งนี้หากต้องการใช้ CompleteSearch แต่หากคุณสนใจ คุณสามารถดูข้อมูลเพิ่มเติมได้จากเอกสารเผยแพร่ด้านล่าง
ในการสร้างดัชนี CompleteSearch ต้องใช้ไฟล์อินพุตสองไฟล์ โดยไฟล์หนึ่งมีคำต่อท้าย .words
และอีกไฟล์หนึ่งมีคำต่อท้าย .docs
ส่วนแรกประกอบด้วยเนื้อหาของเอกสารของคุณที่แบ่งออกเป็นคำ ส่วนที่สองประกอบด้วยข้อมูลที่คุณต้องการแสดงเมื่อเครื่องมือค้นหาเข้าชม ทั้งสองมักจะเกี่ยวข้องกัน แต่ก็ไม่เหมือนกันทุกประการ รูปแบบนั้นง่ายมากและอธิบายไว้ตามตัวอย่างที่นี่
หากคุณมีความปรารถนาพิเศษ คุณสามารถสร้างไฟล์อินพุตทั้งสองนี้ด้วยตัวเอง จากข้อมูลใดก็ตามของคุณ จากนั้นคุณสามารถควบคุมสิ่งที่ CompleteSearch จะทำและสามารถทำเพื่อคุณได้อย่างเต็มที่ อย่างไรก็ตาม ในแอปพลิเคชันส่วนใหญ่ คุณสามารถใช้ ตัวแยกวิเคราะห์ CSV ทั่วไป ของเราได้ โดยจะใช้ไฟล์ CSV (หนึ่งบันทึกต่อบรรทัด โดยมีจำนวนคอลัมน์คงที่ต่อบรรทัด) เป็นอินพุต จากนั้นจะสร้างไฟล์ .words และ .docs
แยกวิเคราะห์ CSV มีประสิทธิภาพมากและปรับแต่งได้สูง คุณสามารถดูวิธีการใช้ใน Makefile ของแอปพลิเคชันตัวอย่างต่างๆ (ในไดเร็กทอรีย่อยของไดเร็กทอรี applications
) รายละเอียดเพิ่มเติมของตัวเลือกต่างๆ ได้รับการอธิบายไว้ที่นี่ หากต้องการดูรายการทั้งหมด โปรดดูโค้ดที่แยกวิเคราะห์ตัวเลือกต่างๆ
ไบนารีสำหรับสตาร์ทเอ็นจิ้น CompleteSearch เรียกว่า startCompletionServer
มันทรงพลังมากและมีตัวเลือกมากมาย สำหรับตัวอย่างการใช้งาน คุณสามารถดู Makefile
ใน applications
Director และที่ Makefile
ที่รวมอยู่ของหนึ่งในแอปพลิเคชันตัวอย่าง เอกสารโดยละเอียดของตัวเลือกทั้งหมดสามารถพบได้ใน README.md ในไดเร็กทอรี src
เมื่อเริ่มต้นแล้ว คุณสามารถถามคำถามโดยใช้ UI ทั่วไปและปรับแต่งได้ของเรา (ดูด้านบน) หรือคุณสามารถถามแบ็กเอนด์ได้โดยตรงผ่าน HTTP API ที่ได้รับจาก startCompletionServer
API นั้นเรียบง่ายมากและอธิบายไว้ท้ายหน้านี้ ทดลองใช้แอปพลิเคชั่นตัวอย่างเพื่อให้เข้าใจถึงสิ่งที่มันทำ คุณยังสามารถดูโค้ด JavaScript (ค่อนข้างง่าย) ของ UI ทั่วไปเพื่อทำความเข้าใจว่ามันทำงานอย่างไรและนำไปใช้ทำอะไรได้บ้าง
หากต้องการอวดอินสแตนซ์ CompleteSearch ของคุณให้เพื่อน ๆ เห็น คุณอาจต้องการให้อินสแตนซ์นั้นทำงานภายใต้ URL ที่สวยงาม ไม่ใช่ http://my.weird.hostname.somewhere:76154
สมมติว่าคุณมีเว็บเซิร์ฟเวอร์ Apache ทำงานอยู่บนเครื่องของคุณ จากนั้นคุณสามารถเพิ่มส่วนต่อไปนี้ใน apache.conf
ของคุณหรือในไฟล์กำหนดค่าแยกต่างหากที่รวมอยู่ใน apache.conf
คุณต้องแทนที่ servername
ด้วยชื่อโดเมนแบบเต็ม (FQDN) ของเครื่องที่เว็บเซิร์ฟเวอร์ Apache ของคุณใช้งานอยู่ คุณต้องแทนที่ hostname
ด้วย FQDN ของเครื่องที่ส่วนหน้า CompleteSearch กำลังทำงานอยู่ นี่อาจเป็นเครื่องเดียวกับ servername
แต่ไม่จำเป็นต้องเป็น
< VirtualHost *:80>
ServerName example.cs.uni-freiburg.de
ServerAlias dblp example.cs.uni-freiburg.de
ServerAdmin webmaster@localhost
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://< hostname >:5000/
ProxyPassReverse / http://< hostname >:5000>/
...
</ VirtualHost >
ต่อไปนี้คือสิ่งพิมพ์บางส่วนที่อธิบายเทคนิคเบื้องหลัง CompleteSearch และสิ่งที่สามารถนำมาใช้ได้ งานนี้ทำที่ Max-Planck-Institute for Informatics ผ่านมาระยะหนึ่งแล้ว แต่กลับกลายเป็นว่าฟีเจอร์และประสิทธิภาพที่ได้รับจาก CompleteSearch ยังคงมีความทันสมัยอยู่มาก
พิมพ์น้อยลง ค้นหามากขึ้น: การเติมข้อความอัตโนมัติอย่างรวดเร็วด้วยดัชนีที่กระชับ @ SIGIR 2006
CompleteSearch Engine: โต้ตอบ มีประสิทธิภาพ และมุ่งสู่การรวม IR&DB @ CIDR 2007
ESTER: การค้นหาข้อความ เอนทิตี และความสัมพันธ์อย่างมีประสิทธิภาพ @ SIGIR 2007
การขยายการค้นหาเชิงโต้ตอบที่มีประสิทธิภาพพร้อมการค้นหาที่สมบูรณ์ @ CIKM 2007
การค้นหาการเติมข้อความอัตโนมัติแบบไวต่อเอาท์พุต @ การดึงข้อมูล 2008
การค้นหาข้อความแบบเต็มความหมายด้วย ESTER: ปรับขนาดได้ ง่าย รวดเร็ว @ ICDM 2008