Pull to refresh

Comments 3

А можно просто погрепать по ast. Да, это сложно, зато уже работает для множества языков и довольно шустро.

В WebStorm и других IDE от JetBrains давно есть аналогичная штука, называется Structural Search and Replace https://www.jetbrains.com/help/webstorm/structural-search-and-replace.html. Где-то в документации упоминалось, что там используется упрощённая, но более быстрая версия AST.

А вы представляете, что вы в результате хотите получить?
Потому что, в моем случае когда я ищу по коду я почти всегда хочу получить именно обычный поиск по вхождению, а все "фишки" языкового поиска примерно всегда лишь замусоривают выдачу.

Интересное расширение функционала поиска кода помню у ReSharper'a когда поиск по "ReAl" подразумевал c разбиение по регистру и поиск каждого куска в рамках одного слова a-la ReadAll, ReadingAlternatives и т.п. Очень ускоряет процесс поиска именно в коде, но требует знания подобного синтаксиса. (Да, можно построить регулярку соответствующую этому же выражению, но это гораздо дольше, и хуже ложится в мышечную память) Ну и реализуется сравнительно просто. Индексировать такое больно, хотя вроде префиксное дерево где-то рядом должно быть, но обычный ilike, судя по описанию, должен справится в первом приближении. Я делал что-то похожее в рамках не очень большого объема кода - у нас справлялось без каких-то проблем.

Ранжирование обычно прикручивается поверх уже найденного в таком случае, хотя про кластеризацию и т.п. уже не подскажу, совсем другой кейс.

Sign up to leave a comment.