Not logged in
Fri Dec 5 20:40:38 2008
Elog multi-keyword search
The current Elog search allows you to look for only one keyword in the text.
You cannot search for two keywords by simply separating them with a white space.
That is, a search term "abc def" matches a literal "abc def", not a text containing "abc" and "def".
This is extremely annoying. However, there are still some ways to search for multiple keywords.
The Elog search fields are treated as regular expressions.
In order to match a text containing "abc" and "def", you can use a search term "abc.*def".
A period (.) means "any character", and an asterisk (*) means "any number of repetition of the preceding character".
Therefore, ".*" matches "any number of any character" i.e. anything.
The search term "abc.*def" works fine when you know "abc" appears first in the text you are looking for.
If you don't know the order of appearance of the keywords, you have two choices: either to use,
The vertical bar (|) means "or". Parentheses are used for grouping.
The first example does exactly what you want. However, you have to list all the permutations of your keywords
separated by |. If you have more than two keywords, it can be a very very long search word.
(The length of the search word is O(n!), where n is the number of keywords).
In the second example, the length of the keyword is O(n). However, it can also match a text containing two "abc".
This means the search result may contain some garbages (entries containing only "abc").
I guess in most cases we can tolerate this.
To automatically construct a multiple keyword search term for the Elog, I wrote a bash script called elogkeywd
and it is installed in the control room machines.
You can type
elogkeywd keyword1 keyword2 keyword3
to generate a regular expression for searching a text containing "keyword1", "keyword2" and "keyword3".
The generated expression is of the second type shown above. You can then copy-and-paste the result to
the Elog search field.
The script takes any number of keywords. However, there seems to be a limit on the number of characters you can type
into the search field of the Elog. I found the practical limit is about 3 keywords.