Bob DuCharme @bobdc, tweeted: How to use find with boolean operators AND, OR, NOT today.
Not recent but a nice reminder.
Especially helpful when leaks start occurring in TBs.
Bob DuCharme @bobdc, tweeted: How to use find with boolean operators AND, OR, NOT today.
Not recent but a nice reminder.
Especially helpful when leaks start occurring in TBs.
Binary Boolean Operator: The Lost Levels
From the post:
The most widely known of these four siblings is operator number 11. This operator is called the “material conditional”. It is used to test if a statement fits the logical pattern “P implies Q”. It is equivalent to !P || Q by the material implication.
I only know one language that implementes this operation: VBScript.
…
The post has a good example of why material conditional is useful.
Will your next language have a material conditional operator?
I first saw this in Pete Warden’s Five short links for April 3, 2014.
From the post:
The following is written with Solr users in mind, but the principles apply to Lucene users as well.
I really dislike the so called “Boolean Operators” (“AND”, “OR”, and “NOT”) and generally discourage people from using them. It’s understandable that novice users may tend to think about the queries they want to run in those terms, but as you become more familiar with IR concepts in general, and what Solr specifically is capable of, I think it’s a good idea to try to “set aside childish things” and start thinking (and encouraging your users to think) in terms of the superior “Prefix Operators” (“+”, “-”).
Background: Boolean Logic Makes For Terrible Scores
Boolean Algebra is (as my father would put it) “pretty neat stuff” and the world as we know it most certainly wouldn’t exist with out it. But when it comes to building a search engine, boolean logic tends to not be very helpful. Depending on how you look at it, boolean logic is all about truth values and/or set intersections. In either case, there is no concept of “relevancy” — either something is true or it’s false; either it is in a set, or it is not in the set.
When a user is looking for “all documents that contain the word ‘Alligator’” they aren’t going to very be happy if a search system applied simple boolean logic to just identify the unordered set of all matching documents. Instead algorithms like TF/IDF are used to try and identify the ordered list of matching documents, such that the “best” matches come first. Likewise, if a user is looking for “all documents that contain the words ‘Alligator’ or ‘Crocodile’”, a simple boolean logic union of the sets of documents from the individual queries would not generate results as good as a query that took into the TF/IDF scores of the documents for the individual queries, as well as considering which documents matches both queries. (The user is probably more interested in a document that discusses the similarities and differences between Alligators to Crocodiles then in documents that only mention one or the other a great many times).
This brings us to the crux of why I think it’s a bad idea to use the “Boolean Operators” in query strings: because it’s not how the underlying query structures actually work, and it’s not as expressive as the alternative for describing what you want.
…
As if you needed more proof that knowing “how” a search system is constructed is as important as knowing the surface syntax.
A great post that gives examples to illustrate each of the issues.
In case you are wondering about the December 28, 2011 date on the post, BooleanCause.Occur Lucene 4.6.1.
Use Prefix Operators instead of Boolean Operators by Chris Hostetter.
From the post:
I really dislike the so called “Boolean Operators” (“AND”, “OR”, and “NOT”) and generally discourage people from using them. It’s understandable that novice users may tend to think about the queries they want to run in those terms, but as you become more familiar with IR concepts in general, and what Solr specifically is capable of, I think it’s a good idea to try to “set aside childish things” and start thinking (and encouraging your users to think) in terms of the superior “Prefix Operators” (“+”, “-”).
Don’t hold back Chris! It’s not good for you. Tell us how you feel about “Boolean Operators.” 😉
Seriously, Chris makes a very good case for using “Prefix Operators” and you will learn about powerful searching in both Lucene and Solr.
Well worth studying in detail.
Powered by WordPress