คือสัญลักษณ์พิเศษที่ช่วยเพิ่มประสิทธิภาพในการค้นหา จะประกอบไปด้วย AND,+,OR,NOT และ -
OR
OR เป็น Operators สำหรับการเชื่อมคำ 2 คำที่อยู่ระหว่าง OR โดย
OR จะทำการค้นหาคำที่เท่ากับคำ 2 คำที่เชื่อมกัน หรือ
คำใดคำหนึ่งที่อยู่ระหว่าง OR เป็นลักษณะของการ Union กันระหว่างสองคำ
นอกจากนี้เรายังใช้สัญลักษณ์ || แทนได้
เช่น ต้องการค้นหา jakarta apache หรือ jakarta ใช้คำสั่งดังนี้
"jakarta apache" jakarta
หรือ
"jakarta apache" OR jakarta
AND
AND เป็นoperator สำหรับค้นหาเอกสารที่จะต้องมีคำ 2
คำที่ต้องการค้นหาในเอกสารที่ใดที่หนึ่งในเอกสาร เป็นลักษณะของการ
Intersection กันระหว่างสองคำ ซึ่งโดยปรกติถ้าเราไม่ใส่ AND
ระบบสืบค้นจะทำการเชื่อมคำให้อัตโนมัติเหมือน กับว่าเราใส่ ANDเช่น
ถ้าเราต้องการค้นหาคำ "jakarta apache" and "Apache Lucene"
"jakarta apache" AND "Apache Lucene"
+
เป็นoperator สำหรับบังคับว่าคำที่อยู่หลัง สัญลักษณ์ + จะต้อง มีอยู่ที่ใดที่หนึ่งในเอกสารที่ต้องการค้นหา
เช่นต้องการค้นหาเอกสารที่ประกอบด้วย jakarta และก็ประกอบด้วย lucene ใช้ได้ดังนี้
+jakarta lucene
NOT
NOT เป็น operator สำหรับตัดเอกสารที่ประกอบไปด้วยคำที่ตามหลัง NOT
ออกไป ซึ่งเราสามารถใช้สัญลักษณ์ ! แทนคำว่า NOT ได้ เช่น
ต้องการค้นหาเอกสารที่ประกอบด้วย jakarta apache แต่ไม่เอา Apache
Lucene ใช้คำสั่งดังนี้
"jakarta apache" NOT "Apache Lucene"
operator ตัวนี้ไม่สามารถใช้กับคำหรือวลีเพียงหนึ่งคำได้ เช่น "
NOT "jakarta apache"
-
เป็น operator ยกเว้นการค้นหา คือจะตัดเอกสารที่ประกอบด้วยคำที่อยู่หลังสัญลักษณ์ -
เช่นถ้าเราต้องการค้นหา jakarta apache แต่ไม่เอา Apache Lucene ใช้คำสั่งดังนี้
"jakarta apache" -"Apache Lucene"
การค้นหาได้ถูกแบ่งออกเป็น terms และ operators ซึ่ง terms มี 2 รูปแบบคือ คำศัพท์เพียงหนึ่งคำ(Single Terms) กับ วลี(Phrases)
Single Terms ก็คือคำเพียงหนึ่งคำ เช่น test หรือ hello
Phrases ก็คือกลุ่มคำ ที่ถูกครอบด้วย double quotes เช่น hello dolly
คำศัพท์หลายๆ คำจะถูกเชื่อมต่อกันด้วย boolean operators ซึ่งจะอยู่ในรูปของการค้นหาที่ซับซ้อน (ดูต่อด้านล่าง)
หมายเหตุ:การใช้ตัววิเคราะห์ในการค้นหาคำในรูปแบบของคำศัพท์หรือวลี
มีความสำคัญมากซึ่งจะต้องเลือกตัววิเคราะห์ที่ไม่มีผลกระทบกับคำศัพท์หรือ
วลีที่ค้นหา
การแก้ไขคำศัพท์ที่ใช้ในการค้นหาก็เพื่อเป็นการกำหนดขอบเขตการค้นหาของระบบสืบค้น โดยมีวิธีการค้นหาด้วยกันหลายวิธีดังนี้
Wildcard Searches
เป็นการค้นหาที่สนับสนุนการค้นหาอักขระตัวเดียวหรือหลายๆ
อักขระรวมกันซึ่งก็คือคำศัพท์(Terms )นั่นเอง
(แต่จะไม่สนับสนุนการค้นหาแบบวลี)
สัญลักษณ์ที่ใช้ในการค้นหาอักขระตัวเดียว คือ ?
สัญลักษณ์ที่ใช้ในการค้นหาอักขระหลายตัว คือ *
การค้นหาอักขระตัวเดียว wildcard Searches จะค้นหาอักขระทุกๆ
อักขระที่สามารถนำมาใส่แทน ? แล้วอ่านเป็นคำได้ เช่น text หรือ test
วิธีการใช้ดังนี้ te?t
การค้นหาอักขระหลายตัว wildcard Searchesจะค้นหาอักขระตั้งแต่ 0 ตัวหรือมากกว่า เช่นต้องการค้นหาคำว่า test,tests หรือ tester
ใช้วิธีการได้ดังนี้ test*
นอกจากนี้เรายังสามารถใช้ * เพื่อแทนการค้นหาอักขระตัวเดียวได้โดย
ใช้วิธีการดังนี้ te*t
หมายเหตุ: เราไม่สามารถวางสัญลักษณ์ ? หรือ * ไว้หน้าสุดของคำที่ต้องการจะค้นหาได้
Fuzzy Searches
เป็นการค้นหาที่อยู่บนพื้นฐานของ Levenshtein Distance หรือ Edit
Distance algorithm ซึ่งจะใช้สัญลักษณ์ ~
ใส่ลงไปทีท้ายสุดของคำศัพท์ที่ต้องการค้นหา เช่น
ถ้าต้องการค้นหาคำที่สะกดคำคล้ายๆกับคำว่า roam
วิธีการใช้ ดังนี้ roam~
ผลที่ได้จากการค้นหาคำนี้ก็จะได้คำว่า foam และ roam
แต่ในระบบสืบค้นนี้ได้มีการเพิ่มคุณพารามิเตอร์เข้ามาอีกเพื่อให้ผู้ใช้
ได้สามารถความใกล้เคียงของคำได้มากขึ้น
โดยค่าที่ใส่เข้าไปมีค่าอยู่ระหว่าง 0-1 โดยค่าที่ใกล้เคียง 1
มากที่สุดจะเป็นคำที่คล้ายกับคำที่ต้องการค้นหามากทุกที่สุด
เช่น roam~0.8
แต่โดยทั่วไปถ้าหากไม่ระบุพารามิเตอร์ ก็จะมีค่าเป็น 0.5 ให้อยู่แล้ว
Proximity Searches
เป็นการค้นหาคำที่อยู่ในช่วงที่กำหนด โดยใช้สัญลักษณ์ ~
ต่อท้ายวลีที่ต้องการค้นหา เช่น ต้องการค้นหา apeche และ jakarta
ที่จะต้องมีคำพวกนี้ 10 คำของแต่ละเอกสาร
วิธีใช้ดังนี้ jakarta apache~10
Range Searches
เป็นการค้นหาโดยค่าของคำในเอกสารที่เราต้องการค้นหา
ซึ่งค่าของคำนั้นจะต้องอยู่ระหว่างค่าที่เรากำหนด
โดยจะเป็นการกำหนดแบบครอบคลุม(Inclusive)หรือแบบเฉพาะเจาะจง(exclusive)ก็
ได้ เช่น
mod_date:[20020101 TO 20030101]
ระบบจะทำการค้นหา mod_date ในเอกสารที่มีค่าอยู่ระหว่าง 20020101 และ
20030101 แต่โดยรวมแล้ว Range Searches ไม่ได้มีไว้สำหรับการหาแบบ date
ดังนั้นเราจึงควรใช้วิธีการนี้ในการค้นหาแบบที่ไม่ใช่ date ดังนี้
title:{Aida TO Carmen}
ระบบค้นหาค่าของ title ทุกๆคำที่อยู่ในเอกสาร ที่ค่าของ title อยู่ระหว่าง Aida และ Carman แต่จะไม่รวม Aida และ Carman
โดยที่รูปแบบการกำหนดแบบ inclusive จะใช้สัญลักษณ์แทนโดย [] และ exclusive จะใช้สัญลักษณ์แทนโดย {}
Boosting a Term
เป็นตัวกำหนดระดับความสัมพันธ์ของการค้นหาคำศัพท์ในเอกสารที่ต้องการ
โดยจะใช้สัญลักษณ์ ^ แล้วตามด้วยตัวเลข(the boost
factor)ที่ท้ายคำศัพท์ที่เราต้องการค้นหา
โดยที่ระดับตัวเลขที่มากความสัมพันธ์ของคำศัพท์ก็จะมากตามไปด้วย
เช่นถ้าคุณต้องการค้นหา
jakarta apache
แล้วเราต้องการคำศัพท์ jakarta ให้มีความสัมพันธ์กันมากขึ้น ก็โดยใช้สัญลักษณ์ ^ ซึ่งก็จะอยู่ในรูปแบบดังนี้
jakarta^4 apache
นอกจากนี้เรายังสามารถใช้ Boosting a Term กับวลีได้ด้วย โดยมีลักษณะดังนี้
"jakarta apache"^4 "Apache Lucene"
แต่ถ้าเราไม่กำหนดปรกติ Boosting a Term จะมีค่าเท่ากับ 1 โดยที่ค่า
the boost factor สามารถน้อยกว่า 1 ได้ แต่ไม่สามารถเป็นจำนวนลบได้
จะใช้ () เป็นตัว Group เพื่อเป็นการแยกย่อยการค้นหา
ซึ่งจะมีประโยชน์อย่างมากเมื่อเราต้องการควบคุมการใช้ operator หลายๆ
ตัวในการค้นหา เช่น
ต้องการค้นหา "jakarta" or "apache" และ website คำสั่งดังนี้
(jakarta OR apache) AND website
เพื่อเป็นการจำกัดความสับสนและให้แน่ใจว่าเอกสารที่เราต้องการค้นหานั้น
มีคำว่า website อยู่แน่นอนและนอกจากนี้จะต้องประกอบไปด้วย jakarta หรือ
apache ในเอกสาร