5

I have tried using something like "struct a {" and "struct a {" to look for the declaration of "a". But it seems opengrok just ignores the curly brackets. Is there a way to search for the phrase "struct a {"?

4

3 回答 3

3

Grok 支持转义属于查询语法的特殊字符。当前的特殊字符列表是

+ - && || ! ( ) { } [ ] ^ " ~ * ? : \

To escape these character use the \ before the character. 
For example to search for (1+1):2 use the query: \(1\+1\)\:2
于 2014-10-27T22:20:06.003 回答
1

您应该能够使用“struct a {”(带引号)进行搜索

于 2014-03-26T06:13:11.513 回答
0

来自 OpenGrok 文档:

转义特殊字符:

Opengrok 支持转义属于查询语法的特殊字符。当前的特殊字符是:

+ - && || !( ) { } [ ] ^ " ~ * ? : \ /

要转义这些字符,请在字符前使用 \。例如,要搜索 (1+1):2,请使用查询:(1+1):2

分析器注意事项:索引词由字母数字和下划线字符组成。一个字母的单词通常不被索引为符号!大多数其他字符(包括单引号和双引号)被视为“空格/空白”(因此即使您将它们转义,也不会找到它们,因为大多数分析器都会忽略它们)。

例外情况是:@ $ % ^ & = ? . : 它们大多被索引为单独的单词。因为其中一些是查询语法的一部分,所以必须使用反斜杠对它们进行转义,如上所述。

所以搜索 +1 或 +1 都会找到 +1 和 +1。

有效的字段是

满的

搜索索引中的所有文本标记(单词、字符串、标识符、数字)。

定义

仅查找符号定义(例如定义了变量(函数,...)的地方)。

参考文献

只查找符号(例如方法、类、函数、变量)。

小路

源文件的路径(不需要使用分隔符,或者如果,则使用“/”

  • Windows 用户,"" 是 Lucene 查询语法中的转义键!请不要使用“”,或将其替换为“/”)。另请注意,如果您只想要确切的路径,请将其括在“”中,例如“src/mypath”,否则分隔符将被删除,您将获得更多点击。

历史

历史日志评论。

类型

用于将范围缩小到某些文件类型的分析器类型(例如,仅 C 源代码)。当前映射:[ada=Ada, asm=Asm, bzip2=Bzip(2), c=C, clojure=Clojure, csharp=C#, cxx=C++, eiffel=Eiffel, elf=ELF, erlang=Erlang, file=Image文件,fortran=Fortran,golang=Golang,gzip=GZIP,haskell=Haskell,jar=Jar,java=Java,javaclass=Java 类,javascript=JavaScript,json=Json,kotlin=Kotlin,lisp=Lisp,lua=Lua , mandoc=Mandoc, pascal=Pascal, perl=Perl, php=PHP, plain=Plain Text, plsql=PL/SQL, powershell=PowerShell script, python=Python, ruby​​=Ruby, rust=Rust, scala=Scala, sh =Shell script, sql=SQL, swift=Swift, tar=Tar, tcl=Tcl, troff=Troff, typescript=TypeScript, uuencode=UUEncoded, vb=Visual Basic, verilog=Verilog, xml=XML, zip=Zip]可以使用插入符号 ^ 增强术语(短语)(使其更相关),例如 help^4 opengrok - 将使术语帮助增强

Opengrok 搜索由Lucene提供支持,有关查询语法的更多详细信息,请参阅Lucene 文档

于 2022-02-21T10:17:47.903 回答