tech-userlevel archive


Re: Support for boolean queries in apropos

On Sun, 11 Mar 2012, Abhinav Upadhyay wrote:
The FTS engine of Sqlite supports Boolean queries. Boolean queries simply means building complex queries by combining simple queries using Boolean operators: AND, OR, and NOT. For example:

$ apropos add new user NOT (git OR ssh)

This will provide results which match the query "add new user" but do not match for "git" or "ssh".

Instead of exposing the underlying syntax of the SQL engine, I would prefer to see a user interface syntax similar to that ptovided by google search.

        $ apropos 'add "new user" -(git|ssh)'
        $ apropos add '"new user"' '-(git|ssh)'

where the outer quotes are for the shell, the inner quotes around "new user" mean that those two words must appear together, the "-" means the following term must not appear, the "|" means OR, and the parentheses are for scoping. Not shown in the example is the "+" operator, which google search uses to mean that the term must appear, or that the term has a higher weight than other terms in determining the overall ranking of the results.

2. Or, another option is to use '||', '&&' and '~' as the symbols for the OR, AND, NOT Boolean operators respectively in the apropos frontend and pre-process it to build a proper SQL query so that Sqlite is able to understand and execute it properly.

Please don't make users learn new syntax. I expect many users will already familiar with the syntax offered by google search, so I think it's a good idea to re-use that syntax.

--apb (Alan Barrett)

Home | Main Index | Thread Index | Old Index