Examples:


To find where setResourceMonitors is defined:
defs:setResourceMonitors

To find files that use sprintf in usr/src/cmd/cmd-inet/usr.sbin/:
refs:sprintf path:usr/src/cmd/cmd-inet/usr.sbin

To find assignments to variable foo:
"foo ="

To find Makefiles where pstack binary is being built:
pstack path:Makefile

to search for phrase "Bill Joy":
"Bill Joy"

To find perl files that do not use /usr/bin/perl but something else:
-"/usr/bin/perl" +"/bin/perl"

To find all strings beginning with foo use the wildcard:
foo*

To find all files which have . c in their name (dot is a token!):
". c"

To find all files which start with "ma" and then have only alphabet characters do:
path:/ma[a-zA-Z]*/

To find all main methods in all files analyzed by C analyzer (so .c, .h, ...) do:
main type:c

More info:

A Query is a series of clauses. A clause may be prefixed by:

A clause may be either:

Regular Expression, Wildcard, Fuzzy, Proximity & Range Searches:

Escaping special characters:

Opengrok supports escaping special characters that are part of the query syntax. Current special characters are:
+ - && || ! ( ) { } [ ] ^ " ~ * ? : \ /
To escape these character use the \ before the character. For example to search for (1+1):2 use the query: \(1\+1\)\:2

NOTE on analyzers: Indexed words are made up of Alpha-Numeric and Underscore characters. One letter words are usually not indexed as symbols!
Most other characters (including single and double quotes) are treated as "spaces/whitespace" (so even if you escape them, they will not be found, since most analyzers ignore them).
The exceptions are: @ $ % ^ & = ? . : which are mostly indexed as separate words.
Because some of them are part of the query syntax, they must be escaped with a reverse slash as noted above.
So searching for \+1 or \+ 1 will both find +1 and + 1.

valid FIELDs are

full
Search through all text tokens (words,strings,identifiers,numbers) in index.
defs
Only finds symbol definitions (where e.g. a variable (function, ...) is defined).
refs
Only finds symbols (e.g. methods, classes, functions, variables).
path
path of the source file (no need to use dividers, or if, then use "/" - Windows users, "\" is an escape key in lucene query syntax!
Please don't use "\", or replace it with "/").
Also note that if you want just exact path, enclose it in "", e.g. "src/mypath", otherwise dividers will be removed and you get more hits.
hist
History log comments.
type
Type of analyzer used to scope down to certain file types (e.g. just C sources).
Current mappings: [bzip2=Bzip(2), c=C, csharp=C#, cxx=C++, elf=ELF, erlang=Erlang, file=Image file, fortran=Fortran, gzip=GZIP, haskell=Haskell, jar=Jar, java=Java, javaclass=Java class, javascript=JavaScript, lisp=Lisp, perl=Perl, php=PHP, plain=Plain Text, plsql=PL/SQL, python=Python, scala=Scala, sh=Shell script, sql=SQL, tar=Tar, tcl=Tcl, troff=Troff, uuencode=UUEncoded, vb=Visual Basic, xml=XML, zip=Zip]

the term (phrases) can be boosted (making it more relevant) using a caret ^ , e.g. help^4 opengrok - will make term help boosted

Opengrok search is powered by lucene, for more detail on query syntax refer to lucene docs.