Codesearch - это проект, который позволяет искать нужный код среди популярных гитхаб-репозиториев с запросами на natural language с возможностью фильтрации, ранжирования и паджинации данных.
В качестве бейзлайна используется elasticsearch и 10000 наиболее популярных репозиториев на языке Python. Данные извлекаются из репозиториев, складываются в индекс elasticsearch, а затем, с помощью раличных маппингов и конструктора запросов, можно искать код.
Установка preprocess - пока что так:
pip install git+https://github.com/HSE-JetBrains-department/preprocess@master
Для использования в питоне:
sudo chmod -R ugo+rX /home/$USER/.local/lib/python3.8/site-packages/
Также для работы нужен go:
sudo apt install golang
alias cs='python3 codesearch/cmd/run.py '
Для установки зависимостей и создания модуля нужно запустить из корневой папки команду
pip install -e .
Для работы с тестами я прописал в Makefile команды для запуска эластика, а также подключил unittest - это всё для локальных тестов и чтобы поиграть с эластиком, посмотреть, какие маппинги и запросы можно делать
Запускаем команды из корневой папки, с запущенным и работающим elasticsearch
Создать индекс по схеме
cs init index_name
Предобработать код
cs extract git/repositories/urls.csv working/directory/for/temporaty/files/ directory/where/to/write/result/
Добавить в индекс данные, сложенные в папку results на предыдущем шаге
cs put index_name results
Поиск в индексе
cs search index_name code
cs search index_name "code searching"
Поиск в индексе, запрос записан в виде json
cs search2 index_name path/to/request.json
Удалить индекс
cs delete index_name