Можно ли искать фразу в 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 .