Tìm kiếm Boolean giải thích


29

Mẹ tôi đang tham gia một số khóa học trực tuyến để trở thành một thủ thư về các loại, trong khóa học này họ bao gồm các tìm kiếm boolean, vì vậy họ có thể tìm kiếm cơ sở dữ liệu một cách hiệu quả, tuy nhiên, bà có một câu hỏi nghe giống như thế này:

Tìm kiếm "x HOẶC y" sẽ cho kết quả 105 000 lượt truy cập, trong khi tìm kiếm chỉ x sẽ cho kết quả 80 000 lượt truy cập và tìm kiếm chỉ y sẽ nhận được 35 000 lượt truy cập. Tại sao tìm kiếm "x HOẶC y" cho 105 000 lượt truy cập, khi các tìm kiếm riêng lẻ kết hợp cho 115 000 lượt truy cập?

Đối với tôi điều này nghe có vẻ lạ, vì vậy tôi đã tự mình kiểm tra điều này, bằng cách sử dụng các từ thịt xông khóibánh sandwich .

  • Chỉ có thịt xông khói mang lại kết quả 179 000 000
  • Chỉ có bánh sandwich mang lại kết quả 312 000 000
  • thịt xông khói OR sandwich cho 491 000 000 kết quả

Nhưng đối với tôi, nó cộng lại: 179 000 000 (thịt xông khói) + 312 000 000 (bánh sandwich) = 491 000 000 (thịt xông khói OR sandwich)

Tại sao một truy vấn OR có thể dẫn đến ít lần truy cập hơn cả hai truy vấn riêng lẻ được kết hợp?


22
Bạn có một con chó màu xanh, mèo xanh và mèo đỏ. SỐ OF (BLUE) = 2, SỐ OF (CAT) = 2, nhưng SỐ OF (BLUE hoặc CAT) = 3, không phải 4.
BlueRaja - Danny Pflughoeft

11
Tôi đã thử điều này, nhận được 184 triệu kết quả cho thịt xông khói. Không bao giờ làm cho nó để tìm kiếm bánh sandwich, vì tôi ngay lập tức rời đi để chiên cho mình một ít thịt xông khói.
corsiKa

15
Tôi nghĩ vấn đề thực sự ở đây là cơ sở dữ liệu của bạn không có bánh mì thịt xông khói trong đó.
MooseBoys

@MooseBoys vâng, đây phải là lý do tại sao số của tôi cộng lại, vì họ không nên, phải không?
sch

3
@klskl: Nếu bạn nhận được những con số đó từ google, hãy nhớ rằng những con số đó là những ước tính rất rất thô. Rất có thể là trường hợp, để có được ước tính cho "thịt xông khói OR sandwich", họ chỉ cần tổng hợp các con số. Điều đó chỉ hoạt động vì ước tính không bắt buộc phải có bất kỳ loại chính xác nào.
BlueRaja - Daniel Pflughoeft

Câu trả lời:


62

Gợi ý: Tìm kiếm x VÀ y sẽ cho kết quả 10 000 lượt truy cập.


đúng, nhưng đó là điểm chính, các giáo viên khẳng định tìm kiếm x HOẶC của họ cung cấp ít lượt truy cập hơn so với kết hợp các lượt truy cập tìm kiếm riêng lẻ x sau đó y
sch

63
Không, đó không phải là vấn đề. Trái lại, chính nó là điểm chính.
Yuval Filmus

Tôi mới làm điều này, quan tâm đến công phu? Từ những gì tôi hiểu VÀ sẽ cho kết quả với cả hai từ trong đó, do đó ít kết quả hơn từng từ riêng lẻ, nhưng điều đó có liên quan gì với OR?
sch

2
Khi AND trống HOẶC hoạt động như ADD, nếu không thì không. @klskl thông tin của x VÀ y là rất quan trọng.
Ác

@YuvalFilmus Tôi thấy bây giờ, đó là điểm! (Tôi cũng như vậy, hamburger VÀ sandwich không cho 10 000 lượt truy cập ...) cảm ơn bạn
sch

93

Nguyên tắc đếm áp dụng ở đây là loại trừ bao gồm .

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

Để làm cho các số hoạt động,phải là 10000.|XY|

Một sơ đồ Venn có thể thuyết phục hơn đối với người có thể bị đe dọa bởi ký hiệu.

biểu đồ Venn


4
Điều này thực sự tốt, sẽ sử dụng điều này để giải thích cho mẹ tôi, thực sự sạch sẽ, cảm ơn!
sch

3
Tôi sẽ mở rộng trên sơ đồ của bạn một chút và chỉ ra rằng lý dolà vìlà một phần của cả haivàđã có, vì vậy khi bạn thêm, bạn đã đếm nó hai lần. Sau đó, bạn trừ nó ra để nó chỉ được tính một lần. | X Y | | X | | Y | | X | + | Y ||XY|=|X|+|Y||XY||XY||X||Y||X|+|Y|
Devsman

Toán học giải quyết được, và nó có ý nghĩa, nhưng nó không khớp với đại số đã đặt ngay phía trên nó.
Kevin Brown

Tôi nhớ làm Biểu đồ Venn khi tôi 4-5 tuổi. Họ thực sự bị đánh giá thấp. Cảm ơn bạn John Venn.
Pharap

1
@Pharap Thật vậy, sơ đồ như vậy xứng đáng với Venn-eration của chúng tôi.
Mason Wheeler

13

Tài liệu 1: Con mèo ở trên bàn
Tài liệu 2: Con mèo của tôi màu đen
Tài liệu 3: Con chó ở dưới bàn
Tài liệu 4: Tên con mèo của bạn là gì?
Tài liệu 5: Đây là một bức ảnh đen trắng

Tìm kiếm con mèo : tài liệu trả về là 1,2,4 (3 tài liệu được trả về)
Tìm kiếm màu đen : tài liệu được trả lại là ...
Tìm kiếm con mèo HOẶC màu đen : tài liệu được trả lại là ...

:-D: -D


3

Nói một cách đơn giản:

Tìm kiếm X cung cấp cho bạn n câu trả lời.
Tìm kiếm cho Y câu trả lời cho bạn.
Tìm kiếm X VÀ Y cho bạn câu trả lời p.

Khi tìm kiếm X OR Y, tìm kiếm bị ngắt ngay khi tìm thấy X hoặc Y. Vì vậy, nếu có X trước Y, Y sẽ không được tính khi tìm kiếm X OR Y. Do đó, tìm kiếm của bạn cho X OR Y sẽ cung cấp cho bạn câu trả lời n + m - p.

Điều quan trọng cần lưu ý là kết quả sẽ giống nhau, cho dù bạn thực hiện 2 tìm kiếm hay chỉ một. Chỉ là trong tổng kết hai tìm kiếm, một số tài liệu được tính hai lần.


"tìm kiếm bị ngắt ngay khi tìm thấy X hoặc Y." Điều này không phụ thuộc vào việc thực hiện? Việc triển khai có thể thu được tất cả kết quả cho X, thu được tất cả kết quả cho Y và sau đó kết hợp các kết quả theo cách loại bỏ trùng lặp.
jpmc26

@ArnabDatta Những gì tôi mô tả chắc chắn không phải là XOR. "Loại bỏ trùng lặp" có nghĩa là loại bỏ bản sao thứ hai, không phải tất cả các phiên bản của phần tử đó.
jpmc26

Thật. Tôi đã hiểu nhầm. Xóa bình luận của tôi.
Arnab Datta

3

Hãy tưởng tượng bạn chỉ có một tài liệu. Đây là Tài liệu số 1 với điều này:

X Y

Bây giờ hãy tưởng tượng bạn có một chức năng tìm kiếm có thể cung cấp cho bạn tất cả các tài liệu dựa trên một từ khóa:

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

Lưu ý rằng số lượng tài liệu trong cả hai trường hợp là 1. Bây giờ nếu bạn có chức năng tìm kiếm cung cấp cho bạn số lượng tài liệu khớp với một hoặc nhiều từ khóa được cung cấp:

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

Khi bạn thêm số lượng tài liệu chứa Xvào số lượng tài liệu có chứa Y, điều này khiến bạn phải đếm cùng một tài liệu hai lần. Trong trường hợp của bạn, điều này đã xảy ra 10000lần như đã chỉ ra ở trên :)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.