I. THE ROLE OF PARENTHESES IN BOOLEAN SEARCHES
AM I SUPPOSED TO GIVE YOU 5 MILLION DOLLARS OR 6 MILLION DOLLARS??
You’ve heard it said when looking at your paycheck, or looking at buying that new boat, “It’s just a matter of ‘zeros’.” Well sometimes it is just a matter of ‘parentheses’.
It makes a difference how you group the numbers below by putting in parentheses:
1+2x2=$5 million? $6 million?
1+(2x2)=5 Here we did the “multiply” first, and then the “add”…..Multiply is similar to “and”
(1+2)x2=6 Here we did the “add” first, and then the multiply. ”Addition” is similar to “or”
FROM HIGH SCHOOL MATH:
Ex #1: 1 x (3 + 2) = 1 x 5 = 5
Ex #2: 1 x (3 + 2) x (1 + 2) + 1 =
1 x 5 x 3 + 1 = 15 + 1 = 16
Ex #3: (1 x (3 + 2) x (1 + 2) + 1) x 2 = 16 x 2 = 32
Parentheses will help us group search terms for effective searches. We’ll come back to the importance of using parentheses later.
II. EXAMPLES OF WRITING A BOOLEAN EQUATION
YOUR MOTHER SENDS YOU TO THE STORE TO GET INGREDIENTS FOR A POUND CAKE: She says, “get whole wheat flour or grits and sugar or honey and butter or olive oil and baking soda, but no gun powder.”
(whole wheat flour OR grits) AND (sugar or honey) AND (butter or olive oil) AND baking soda AND NOT gun powder = successful trip to the grocery store to make pound cake.
What would your mother say if you came back with gun powder instead of baking soda? Would she be pleased? Would she congratulate you on a successful trip to the grocery store?
“CONGRATULATIONS SON”! You know that new Mustang you’ve always wanted, well, I’m going to buy it for you & let YOU pick the colors.” “Thanks Dad!! I’d like either a black exterior and gray interior or else a red exterior with a red interior or a purple exterior with a purple interior”
(black ext and gray int) or (red ext and red int) or (purple ext and purple int) = correct color combination.
Would you be happy if Dad drove up in a car with a gray interior and a purple exterior??
“NOTICE!! – We apologize that the restaurant kitchen is running short on food so please pick at least 2 meals and preferably more.” ----- OK, as a customer, we are flexible so we’ll order the following meals:
(Hamburger and fries) or (BLT and baked potato) or (grilled cheese sandwich and onion soup) =correct order
If the wait staff brings out an order of fries and a baked potato, will this be a correct order?
III. STRING SEARCHES
WHAT HAPPENS WHEN YOU SEARCH A BUNCH OF RESUMES FOR CERTAIN KEY WORDS USING A RESUME DATABASE:
As an exercise, go to any resume database and pull up a resume at random. Look over the resume and see if you can pick out a word or a group of words [WE CALL THIS A “STRING”, because it is a string of letters in the alphabet in a specific order] that you think would be UNIQUE to this particular resume and this particular resume ALONE. Maybe, for example, at the bottom of the resume the candidate said that their favorite musical group was Fleetwood Mac, or they said that , for example, they won the 1986 Butte Montana President’s Trophy. Now close out of that resume and go back to where you enter your search words for this resume data base and in this example (you can come up with your own example) just enter,” Fleetwood Mac”. Odds are very good that you will be able to pull up the same resume, unless of course 499 other candidates stuck Fleetwood Mac on their resume, which isn’t too likely. Similarly, start over again and enter the (for example) search words, “1986 Butte Montana President’s Trophy”. Chances are very good that you will be able to pull the same candidate out of the pile again using this search string. If you enter “1987 Butte Montana President’s Trophy”, you won’t find this candidate.
IV. EXAMPLE OF AN IT/SOFTWARE SEARCH STRING
V. DATABASE ADMINISTRATOR
Suppose you had to find candidates in a database for the following job description:
1. Must have hands on experience with data modeling or design of a database.
2. Must have experience in Microsoft SQL Server 7.0.
3. Strongly prefer a working knowledge of either C++ and/or Java.
4. Database experience with back-up, tuning, stored procedures, and security.
5. 1 year experience with XML
You’ll have go through several trial-and-error passes to come up with the right search. Here are possible Boolean Search Strings:
Pass #1 - Microsoft SQL Server 7.0 and modeling and design and back-up and tuning and stored procedures and security.
Notes on Pass #1: Above equation would find the perfect candidate, but highly unlikely since the perfect resume would have to have been written. Candidate may have all the above skills, but if they forgot to include ANY ONE of the above OR if they ASSUMED that the recruiter would intuitively know that the candidate had the skills but just didn’t list them on the resume, this resume WOULD NOT be surfaced out of the database. For example a Database Administrator might have back-up and tuning in their background, but just didn’t put it on the resume. We can solve this by Or’ing together the requirements in bullet #4 above…... We can also drop Microsoft from the above equation.
Pass #2 – (SQL Server 7.0 and modeling and design) and (back-up or tuning or stored procedures or security)
Notes on Pass #2: Not everybody is going to put “modeling” AND “design” in their resume, so let’s OR those together in the next pass.
Pass #3 – SQL Server 7.0 and (modeling or design) and (back-up or tuning or stored procedures or security)
Notes on Pass #3: After running several searches using the above Boolean search string, we find that many of the resumes are those of Java and C++ programmers, and they only dabbled at one point in their career in the things of the world of databases. These people never had the title of Database Administrator. Our client is looking for a strong, databases-are-all-I’m-interested-in kind of person, so we need to add Database Administrator. But some resumes may have Database Administrator on them and not DBA and vice versa, so we need to include BOTH by OR’ing these two terms together.
Pass #4 – (Database Administrator or DBA) and SQL Server 7.0 and (modeling or design) and (back-up or tuning or stored procedures or security)
Notes on Pass #4: This is a pretty good search string, but we still aren’t getting many hits. It turns out that SQL Server 7.0 has only been out for 1 year and there aren’t many folks who have that. There are plenty of SQL Server 6.5 candidates, but the client FIRMLY only wants those who have SQL Server 7.0. So now we need to get creative on how else to find people with SQL Server 7.0 experience…………There are several alternative ways we can find these people: 1) ‘SQL Server’ – some resumes will leave off the 7.0 even though they have it. 2) ‘SQL 7’ – some resumes will shorten the phrase by leaving out the word ‘server’ (remember a search string engine is only looking for a very specific ‘string’ of characters is a very specific order). 3) ‘SQL Server 6.5/7.0’ DBA’s who have had both 6.5 and 7.0 experience will frequently list their experience in this ‘/’ format. 4) ‘5/7’ - Monster doesn’t recognize non-letters or numbers, and so ‘6.5/7.0’ looks like ‘5/7’ to Monster, so if we find the string, ‘5/7’, we’ve got a pretty good shot at finding the right person. Now if we combine or OR all of these together, our odds go up as we implement this in Pass #5.
Pass #5 - (Database Administrator or DBA) and (SQL Server 7.0 or SQL 7 or SQL Server 6.5/7.0 or 5/7) and (modeling or design) and (back-up or tuning or stored procedures or security)
Notes on Pass #5: This isn’t the end of ways to approach this search, but it gives you a good start. Once we find these resumes, then we start prioritizing those which also have C++ or Java (7/10) and those that have XML (5/10). Both of these are druthers.
VI. JAVA DEVELOPER JOB SPEC – (2-3 years experience person)
• Experience in java development.
• Experience in C++ development.
• Experience with ASP and/or JSP.
• Exposure (???) to relational databases (RDBMS) such as Access, SQL, Oracle, and/or Sybase.
• ??? Experience with ODBC and/or JDBC???.
Pass #1 – Java and C++ and (ASP or JSP) and (RDBMS or Access or SQL or Oracle or Sybase) and (ODBC or JDBC)
Notes on Pass #1: Monster does not recognize “+” signs. Therefore Monster won’t search for just ‘C++’**, because to Monster it looks just like ‘C’. There are several ways around this:
1) Many, but not all, programmers who have C++ experience have C also, and they usually note this on their resumes as ‘C/C++”. Monster still doesn’t recognize the ‘++’, but it certainly will identify the ‘C/C’ which is good enough to get you to C++!
2) Most companies will accept Visual C++, so this can be represented as ‘Visual C’ or as ‘VC’ (for VC++).
3) C++ is an older generation programming language, at least as compared to Java. C++ is harder to program, but it generally runs faster than Java. Java is faster and easier to use BUT now it’s speed is approaching that of C++, making Java the “hot” skill, so many programmers do have C++ experience but they don’t put it on their resume because it’s not the latest “craze”. So if you find Java, you often find C++ if you call the person and ask.
**It is best to leave the “++’s” in your search equation, because you may cut and paste this string into Headhunter, Copernic or some other search engine that does recognize “++”.
Pass #2 – Java and (C++ or C/C++ or Visual C++ or VC++) and (ASP or JSP) and (RDBMS or Access or SQL or Oracle or Sybase) and (ODBC or JDBC)
Notes on Pass #3: ASP (Active Server Pages) and JSP (Java Server Pages) are software tools that allow a web page to interact with a database. Most, if not all, databases are RDBMS (Relational Database Management System). Access, SQL, Oracle, and Sybase all belong in the RDBMS category. So we could conclude that a) if a person has ASP or JSP it means that b) they are interacting with a database and that if they are interacting with a database that c) it is highly probably that it is a RDBMS database, and if it is an RDBMS, it is highly probable that it is one of the ones listed above. Also remember that the job spec only required an “exposure” to an RDBMS.
All this is being stated so that we can ELIMINATE some of the above terms and pick up more resumes to choose from out of the database..
We could also probably eliminate ODBC (Open Data Base Connectivity) and JDBC (Java Data Base Connectivity) because both of these software tools are used to access databases, and we have already established that a person having ASP or JSP is accessing databases, the odds are good that they person is using either ODBC or JDBC, but if they didn’t put it on their resume, that resume will not be surfaced out of the database. However it is true that a person may be using something besides ODBC or JDBC to access databases, such as ADO, RDO, or OLE. If the client is really set on ODBC and JDBC, then you might have to leave it in the Boolean search string above. This type of situation gets into the fuzzy judgment call area, or it may mean you have to play around with different combinations of search terms. This process is truly one that exercises both your right and left brain.
Some resumes won’t have ASP or JSP. Instead some will spell it out as Active Server Pages or Java Server Pages, so if we only look for ASP or JSP, we’ll miss these folks. To fix this, we’ll OR in some additional terms as shown below in Pass #4. Also in #4, we’ll take out all the database access references in order to glean more good qualified resumes.
Pass #3 - Java and (C++ or C/C++ or Visual C++ or VC++) and (ASP or Active Server Pages or Java Server Pages or JSP)
Notes on Pass #4: Now we have a pretty good search string for Java developers, but when we run Monster and get 499 resumes, we realize that it is going to be very time consuming to go through all of these, so we need to look for ways to cut this number down without sacrificing good resumes. One way to do this is to scan down the list of job titles for the various resumes without opening any of the actual resumes. With the above search (and I have personally encountered this many times) you will get the following unwanted::
1) Recruiters-”I have recruited Java, C++, ASP, JSP, etc software engineers”:
2) Managers or directors or president or vice president (remember, you are looking for a 2-3 year experience person and these words are unlikely but not impossible to appear on the target resumes.
3) Business analyst – “I did business analysis on projects where software engineers (NOT ME THOUGH) were using Java, C++, ASP, etc.” As you scan down the list of titles, you’ll find others you want to exclude.
Pass #4 - Java and (C++ or C/C++ or Visual C++ or VC++) and (ASP or Active Server Pages or Java Server Pages or JSP) and not (recruiter or manager or director or president or vice president or business analyst or sales manager or student or human resources or HR or marketing manager or business development)
Notes on Pass #5: This should give you a good search string, but always understand that anywhere along each of these steps you’ll probably need to tinker with the search criteria in order to get the best results for your search. The above string might knock down your list of 499 resumes to go through, down to maybe 130. Big time savings.
VII. MISCELLANEOUS SEARCH STRATEGIES:
1. Looking for a Java developer and use: Java and consultant and developer and software engineer. Won’t find very much because the person will have to have all 3 titles in his resume, consultant, developer, and software engineer because you “and’ ed” them together. It is better to OR these 3 terms together and put a parentheses around them and then “AND” that with Java.
2. If you want to find a Java developer in the Dallas area, use the area codes: Java and (214 or 972). For smaller states, you don’t need to use area codes. For example if you are looking for someone in a small state like MA? Forget area codes, but include surrounding small states like RI and CT. LincMad.com makes an excellent area code map. One note of caution here: especially in Monster and Headhunter, many candidates submit “confidential resumes” which obviously don’t have phone numbers on them, so if I’m looking for a candidate in Dallas Texas (area codes 214 & 972), the above search criteria would miss many qualified candidates.
3. Headhunter.net allows you to enter a very long search string, but you only get one pass at it. Monster.com allows you a shorter search string, but you can enter subsequent strings that allow you to sub range down to the exact resumes you need. One caution in using Monster, if for example, you enter Java as a search string, and are looking at the whole U.S., you will get 500 resumes or hits. If you then enter Java and specify that you only want to look in Texas, you’ll get 500 resumes. Hmm, something is wrong here. Either all 500 Java programmers in the U.S. are in Texas and zero Java resumes are in the other 49 states, OR something else is going on. If there are 5000 Java resumes in the U.S. or 5000 Java resumes in Texas alone, Monster is going to pick 500 resumes for you, and you are not going to see the other “hidden” 4500 Java resumes. So when using Monster, make sure that the search string that you can fit into the FIRST PASS narrows down the number of resumes to 499 or less. You can do this by adding more restrictive search terms or you can tell Monster to search for resumes received in only the last 3 days. Either way you do it, you need to be at 499 or below on your first pass with Monster.
4. Sometimes you will be looking for a Java or C++ programmer and find a resume with great experience in both Java and C++, for example. Then when you read the resume more carefully, you find out that the person has no web development experience. But how can that be? Embedded application person. More specifically, an embedded application is one in which, say, an Intel Pentium III microprocessor is ‘embedded’ into a microwave oven. This is an embedded application. A Java or C++ programmer will write a software program that is transferred to the inside of the microprocessor, never to be changed or modified again! If you take this same Intel Pentium III microprocessor and put it into a Sony laptop computer, this is a computer application. So let’s write a simplified boolean search string that will filter out these embedded/non web related resumes as follows: (Java or C++) and not embedded.
5. Use of the asterisk or ‘wildcard’: If you entered “Java programmer” as a search term, you could possibly miss great resumes where the person never used the word “programmer” on his resume, but instead had a statement like, “I’ve been programming in Java for 5 years”, or “I’ve programmed with Java for 5 years”. In both of these cases if the resume used the words “programming” or “programmed”, the resume would not be surfaced, because the search string would ONLY be looking for the word “programmer”. However if you used the following search string: Java program* , this would pick up programmer, programmed, and programming
6. There is also the double asterisk. Monster is fuzzy about their status using this. I don’t know if other databases have this feature. But the double asterisk is supposed to pick up ‘stem’ words. For example, fly** would also pick up all the words that “stem” off this word such as flying, flew, flown. Another use of the single asterisk is: sales and manag* which will also pick up manager, managing, and management. (Note, if we had used manage* instead of manag* above, we would have missed managing.)
7. Another way of picking up a 2-3 year experience Java programmer is to use: Java and (programm* or software engineer or software development engineer or software consultant or software developer or web developer) and not (manager or director or vice president or CIO or CTO or president). Sometimes you need to OR together all the possible titles a software developer might have, put parentheses around all of this, and then AND it with something else you’re looking for, or as in the case above, things you are NOT looking for.
Well, there you have it. Again, this was not meant to be totally self-explanatory without the lecture comments to go along with it. And again, I welcome your questions and comments.
George Boole was a great mathematician that died in 1864. His work was largely ignored until about 30-40 years ago when somebody ‘discovered’ ‘digital’ and then “computers”. The only problem with building computers, there was no “language” back then that could describe how a computer was to be built in order for it to perform desired functions. Apparently somebody remembered George Boole, and as they say, “the rest is history”. – John Childs