Можно ли искать фразу в opengrok, содержащую фигурные скобки?

Я попытался использовать что-то вроде "struct a {" и "struct a {" для поиска объявления "a". Но, похоже, opengrok просто игнорирует фигурные скобки. Есть ли способ найти фразу "struct a {"?

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

Вы должны быть в состоянии искать с "struct a {" (с кавычками)

Из документации 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=обычный текст, plsql=PL/SQL, powershell=сценарий PowerShell, python=Python, ruby=Ruby,rust=Rust, scala=Scala, sh = Скрипт оболочки, 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 .

Другие вопросы по тегам