อธิบายการค้นหาบูลีนแล้ว


29

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

การค้นหา "x OR y" จะส่งผลให้เกิดฮิต 105,000 ครั้งในขณะที่การค้นหาเพียง x จะส่งผลให้ 80,000 ฮิตและการค้นหาเพียง y จะได้รับ 35,000 ครั้ง เหตุใดการค้นหา "x OR y" จึงให้ยอดฮิต 105,000 ครั้งเมื่อการค้นหาแบบรวมแต่ละรายการให้ยอดฮิต 115,000 ครั้ง

สำหรับฉันนี้ฟังดูแปลก ๆ ดังนั้นผมทดสอบนี้เองโดยใช้คำเบคอนและแซนวิช

  • เฉพาะเบคอนผล179 000 000ผล
  • เท่านั้นแซนวิชให้ผล312 000 000ผล
  • เบคอนหรือแซนวิชให้491 000 000ผล

แต่สำหรับฉันมันเพิ่มขึ้น: 179 000 000 (เบคอน) + 312 000 000 (แซนวิช) = 491 000 000 (เบคอนหรือแซนวิช)

เพราะเหตุใดข้อความค้นหา OR จึงส่งผลให้เกิด Hit น้อยกว่าแบบสอบถามทั้งสองรายการรวมกัน


22
คุณมีสุนัขสีน้ำเงินแมวสีน้ำเงินและแมวสีแดง จำนวนของ (BLUE) = 2, จำนวนของ (CAT) = 2 แต่จำนวนของ (BLUE หรือ CAT) = 3 ไม่ใช่ 4
BlueRaja - Danny Pflughoeft

11
ฉันลองสิ่งนี้ได้ผล 184 ล้านเบคอน ไม่เคยทำเพื่อค้นหาแซนวิชเพราะฉันออกไปทันทีเพื่อทอดเบคอน
corsiKa

15
ฉันคิดว่าปัญหาจริงที่นี่คือฐานข้อมูลของคุณไม่มีเบคอนแซนด์วิชอยู่
MooseBoys

@ MooseBoys ใช่นี่เป็นเหตุผลที่ตัวเลขของฉันเพิ่มขึ้นเนื่องจากพวกเขาไม่ควรใช่มั้ย
sch

3
@klskl: หากคุณได้รับตัวเลขเหล่านั้นจาก Google เก็บไว้ในใจตัวเลขเหล่านั้นเป็นอย่างมากประมาณการคร่าวๆ มันอาจเป็นไปได้ว่าในการที่จะได้รับ "เบคอนหรือแซนวิช" พวกเขาเพียงแค่หาจำนวน ใช้งานได้เพียงเพราะการประเมินไม่จำเป็นต้องมีความแม่นยำใด ๆ
BlueRaja - Danny Pflughoeft

คำตอบ:


62

คำแนะนำ: การค้นหา x และ y จะส่งผลให้เกิด 10,000 ครั้ง


ใช่ แต่นั่นคือจุดที่ครูเรียกร้องการค้นหา x หรือ y ของพวกเขาให้น้อยกว่าการรวมฮิตของการค้นหารายบุคคล x แล้ว y
sch

63
ไม่นั่นไม่ใช่ข้างจุด ในทางตรงกันข้ามมันเป็นประเด็น
Yuval Filmus

ฉันยังใหม่กับสิ่งนี้สนใจที่จะทำอย่างละเอียด? จากสิ่งที่ฉันเข้าใจและจะให้ผลลัพธ์ด้วยคำทั้งสองคำดังนั้นผลลัพธ์ที่น้อยกว่าแต่ละคำ แต่สิ่งที่เกี่ยวข้องกับ OR คืออะไร
sch

2
เมื่อและว่างเปล่าหรือทำงานเหมือนเพิ่มมิฉะนั้นจะไม่ทำงาน @klskl ข้อมูลของ x AND y เป็นสิ่งสำคัญ
Evil

@YuvalFilmus ฉันเห็นแล้วตอนนี้มันเป็นประเด็น! (ฉันเป็นเหมือนแฮมเบอร์เกอร์และแซนวิชไม่ได้ให้ 10,000 ฮิต ... ) ขอบคุณ
sch

93

หลักการนับที่นำมาใช้ที่นี่คือการยกเว้นการรวม

|XY|=|X|+|Y|-|XY|

|XY|

ไดอะแกรมเวนน์อาจทำให้คนที่อาจถูกข่มขู่โดยสัญกรณ์น่าเชื่อถือมากกว่านี้

แผนภาพเวนน์


4
มันดีจริงๆจะใช้มันเพื่ออธิบายให้แม่ของฉันสะอาดจริงๆขอบคุณ
sch

3
|XY|=|X|+|Y|-|XY||XY||X||Y||X|+|Y|
Devsman

คณิตศาสตร์ใช้งานได้ดีและมีเหตุผล แต่มันไม่ตรงกับพีชคณิตชุดที่อยู่ด้านบน
Kevin Brown

ฉันจำได้ว่าทำ Venn Diagrams เมื่อฉันอายุ 4-5 ขวบ พวกเขาดูถูกดูแคลนจริงๆ ขอบคุณ John Venn
Pharap

1
@Phap แน่นอนแผนภูมิดังกล่าวสมควรได้รับ Venn-eration ของเรา
Mason Wheeler

13

เอกสาร 1: แมวอยู่บนโต๊ะ
เอกสาร 2: แมวของฉันเป็นสีดำ
เอกสาร 3: สุนัขอยู่ใต้โต๊ะ
เอกสาร 4: แมวของคุณชื่ออะไร
เอกสารที่ 5: นี่เป็นภาพขาวดำ

ค้นหาcat : เอกสารที่ส่งคืนคือ 1,2,4 (ส่งคืน 3 เอกสาร)
ค้นหาblack : เอกสารที่ส่งคืนคือ ...
ค้นหาcat หรือ black : เอกสารที่ส่งคืนคือ ...

:-D :-D


3

ในคำง่าย ๆ :

ค้นหา X ให้คำตอบแก่คุณ
ค้นหา Y ให้คำตอบคุณ
ค้นหา X และ Y ให้คำตอบ

ในการค้นหา X หรือ Y การค้นหาจะหยุดลงทันทีที่พบ X หรือ Y ดังนั้นหากมี X หน้า Y, Y นั้นจะไม่ถูกนับในการค้นหา X หรือ Y ดังนั้นการค้นหา X หรือ Y จะให้คำตอบ n + m - p

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


"การค้นหาหยุดลงทันทีที่พบ X หรือ Y" สิ่งนี้ไม่ได้ขึ้นอยู่กับการใช้งานหรือไม่ การใช้งานสามารถรับผลลัพธ์ทั้งหมดสำหรับ X ได้รับผลลัพธ์ทั้งหมดสำหรับ Y แล้วรวมผลลัพธ์ในวิธีที่กำจัดรายการที่ซ้ำกัน
jpmc26

@ArnabDatta สิ่งที่ฉันอธิบายไม่แน่นอนที่สุดคือ XOR "กำจัดรายการที่ซ้ำกัน" หมายถึงการกำจัดสำเนาที่สองไม่ใช่ทุกอินสแตนซ์ขององค์ประกอบนั้น
jpmc26

จริง ฉันเข้าใจผิด. ลบความคิดเห็นของฉัน
Arnab Datta

3

ลองนึกภาพคุณมีเอกสารเพียงฉบับเดียว นี่คือเอกสาร # 1 พร้อมสิ่งนี้:

X Y

ตอนนี้คิดว่าคุณมีฟังก์ชั่นการค้นหาที่สามารถให้เอกสารทั้งหมดตามคำหลักเดียว:

search("X") => 1
search("Y") => 1

ขอให้สังเกตว่าจำนวนเอกสารในทั้งสองกรณีคือ 1 ทีนี้ถ้าคุณมีฟังก์ชั่นการค้นหาที่ให้จำนวนเอกสารที่ตรงกับคำค้นหาหนึ่งคำหรือมากกว่านั้น:

search("X", "Y") => 1

เมื่อคุณเพิ่มจำนวนเอกสารที่มีXจำนวนเอกสารที่มีYนี้ทำให้คุณนับเอกสารเดียวกันสองครั้ง ในกรณีของคุณสิ่งนี้เกิดขึ้น10000ตามที่ระบุไว้ข้างต้น :)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.