Each team should only hand-in one copy of the code and documentation.
| Basic Search | 12 points |
| Advanced Search | 12 points |
| HTML: search screens, results pages | 8 points |
| parsing,cookie, security | 6 points |
| design and adherence to specification | 3 points |
| documentation, credits page | 4 points |
Short answer: I apologize for the confusion about the expert search. If you think that your search does not correspond to any of the solutions I describe below (for example, if you don't allow a + for the first term), please, don't panic. These are minor details which do not have a major impact on the points for the coursework. I would recommend that you don't start making changes but instead mention in your documentation how your expert search works.
Long answer:
Translating the Boolean operators directly
into Perl AND/OR/NOT causes problems. If
+cat +dog bird fish
was translated into
(cat AND dog) OR bird OR fish
then documents with only bird or fish
but not dog or cat would be retrieved.
This would be a contradiction to the fact that cat and dog are
supposed to be required.
But it turns out that other possible solutions also have problems.
Another solution is to group all + terms and all terms
without + and connect them with AND:
(cat AND dog) AND (bird OR fish)
But this produces odd behavior in the case of only one optional term because
+cat +dog bird
would be translated as
cat AND dog AND bird
where the optional term is then also required.
The solution which seems most appropriate from a logical viewpoint
would be to leave the optional terms
off, if required terms exist:
cat AND dog
But this logically correct solution has severe usability issues because
optional terms seem to have no purpose at all.
All of these issues are caused by the fact that there is no simple way to translate natural language terms (such as "required") into Boolean operators.
In conclusion: Your expert search should produce precise results in cases where all terms are optional and in cases where all terms either have + or - in front of them, because these cases are unambiguous. In all other cases, there exist several different possible solutions.