Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
5 / 5 / 3
Регистрация: 15.01.2017
Сообщений: 690

Как сделать поиск аналогичный поиску на "github.com"?

08.10.2018, 11:15. Показов 580. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сделать аналогичный поиск как в "github.com"?
Меня интересует поиск по "repositories", "users" и фильтрация результатов по языку.

Сценарий:
1. Пользователь. Вводит поисковую фразу;
2. Сайт. Выполняет поиск;
3. Сайт. Выводит результат:
a. repositories;
b. users;
Фильтр:
- языки;

После нажатия кнопок "repositories" или "users" в таблицу выводится результат.
После нажатия кнопки языки (например "C#"), результаты фильтруются.

Общий результат поиска:
Репозитарии
- Репозитарии - 108 951 результатов
- C# (репозитарий) - 4 315 результатов

Пользователи
- Пользователи - ~ 4K результата
- C# (пользователи ) - 72 результата

Как повторить данный сценарий работы поисковика?
Я написал предварительный код, но как сделать чтобы он работал более правильно не понимаю.

Метод не завершен "searchUser(string searchQuery_str)" .
Я планирую сделать это по аналогии с «SearchReposit(string searchQuery_str, string lang_str)»

Ссылка на документацию по поиску - ссылка

Код
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 
 private async void button1_Click(object sender, EventArgs e)
 {
            // Получаем поисковую фразу
            string searchQuery_str = Search_txB.Text;
            string lang_str;
*
*
            // Поиск по репозитариям. "Результат"
            lang_str = "";
            var countRepo = await SearchReposit(searchQuery_str, lang_str);
*
*
             label5.Text = countRepo;
*
            // Поиск по репозитариям. "Результат"
            lang_str = "C#";
            var countRepoLang = await SearchReposit(searchQuery_str, lang_str);
*
            label7.Text = countRepoLang;
*
 }
*
*
public async Task<string> SearchReposit(string searchQuery_str, string lang_str)
 {
            // Поиск по "Реозитариям"
            var request = new SearchRepositoriesRequest(searchQuery_str); // mvc client side framework - Структура клиентской стороны mvc           
*
            switch (lang_str)
            {
               case "C#":
                   request.Language = Language.CSharp;
                   break;                
            }
*
            var resultRepo = await client.Search.SearchRepo(request);
*
            // Количество репозитариев
            decimal countRepo_dec = Convert.ToDecimal(resultRepo.TotalCount);
*
            // Количество репозитариев. Форматирование
            string countRepo_str = formatValue(countRepo_dec);
*
            return countRepo_str;            
}
*
   // Поиск по "Пользователям" ()
public async void searchUser(string searchQuery_str)     
{        
            var request = new SearchUsersRequest(searchQuery_str); // _____
*
            var resultUser = await client.Search.SearchUsers(request);
*
            label6.Text = resultUser.TotalCount.ToString();
            // var resultUsers = await client.Search.SearchUsers(request);
}
Миниатюры
Как сделать поиск аналогичный поиску на "github.com"?   Как сделать поиск аналогичный поиску на "github.com"?  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.10.2018, 11:15
Ответы с готовыми решениями:

Можно ли организовать програмный поиск, аналогичный поиску "найти всё"?
Кто знает,можно ли организовать програмный поиск ,аналогичный поиску 'найти всё'? Ещё вопрос.Нужен поиск(програмный или обычный) по...

Как организовать поиск аналогичный Windows 7
Если кто-нибудь шарит в этом помогите плиз, нужно написать программу поисковик, такую как в Win7 чтоб прога работала с MFT или поддерживала...

Нужен совет по HttpWebRequest (как сделать аналогичный запросу curl)
Люди, добрый вечер! Нужна помощь с HttpWebRequest... Не могу второй день разобраться как реализовать запрос на httpwebrequest,...

1
5 / 5 / 3
Регистрация: 15.01.2017
Сообщений: 690
08.10.2018, 22:37  [ТС]
Используется библиотека "octokit.net"

Добавлено через 57 минут
Дополнение 2
Текущая логика кода:
- поиск по всем репозитариям:
- отправляем запрос;
- получаем ответ;
- поиск по репозитариям которые используют C#:
- отправляем запрос;
- фильтруем запрос по языку "C#";
- получаем ответ;
Т.е. сейчас выполняется для каждого случая отдельный запрос(var request), а мне кажется, что нужно выполнить один запрос, а потом выполнять над ним следующие действия:
- фильтровать;
- сортировать;
- очистить фильтрацию;
- очистить сортировку.

Вопрос в том: как сделать чтобы можно было выполнить один запрос, а потом выполнять над ним следующие действия:
- фильтровать;
- сортировать;
- очистить фильтрацию;
- очистить сортировку
- вычислить количество результатов поиска?

Правильно ли я понимаю логику и возможно ли это сделать?

Если я правильно понимаю, то работа с поиском "пользователей" будет аналогична с поиском "репозитариев".



Добавлено через 10 часов 9 минут
Ответ. Вариант 1
Изменил переменную "request":
- было "var" - стало "SearchRepositoriesRequest";
- было "локальной" - стало "глобальной";

Изменил метод "SearchReposit(string searchQuery_str, string lang_str)"
- добавил аргумент "bool null_flg" - стало "SearchReposit(string searchQuery_str, string lang_str, bool null_flg)";
- добавил проверку "bool null_flg";
C#
1
2
3
4
  if (null_flg == false)
             {
                 request = new SearchRepositoriesRequest(searchQuery_str); 
             }
Код выглядит так
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
SearchRepositoriesRequest request;
    public async Task<string> SearchReposit(string searchQuery_str, string lang_str, bool null_flg)
            {
                //SearchRepositoriesRequest request = new SearchRepositoriesRequest();
                // Поиск по "Реозитариям"
                if (null_flg == false)
                {
                     request = new SearchRepositoriesRequest(searchQuery_str); // mvc client side framework - Структура клиентской стороны mvc           
                    // return request; 
                }
 
                switch (lang_str)
                {
                   case "C#":
                       request.Language = Language.CSharp;
                       break;                
                }
 
                var resultRepo = await client.Search.SearchRepo(request);
 
                // Количество репозитариев
                decimal countRepo_dec = Convert.ToDecimal(resultRepo.TotalCount);
 
                // Количество репозитариев. Форматирование
                string countRepo_str = formatValue(countRepo_dec);
 
                return countRepo_str;            
            }
 
 
    private async void button1_Click(object sender, EventArgs e)
            {
                // Получаем поисковую фразу
                string searchQuery_str = Search_txB.Text;
                string lang_str;
                bool null_flg;
 
 
                // Поиск по репозитариям. "Результат"
                lang_str = "";
                null_flg = false;
                var countRepo = await SearchReposit(searchQuery_str, lang_str, null_flg);
                null_flg = true;
 
                label5.Text = countRepo;
 
                // Поиск по репозитариям. "Результат"            
                lang_str = "C#";
                var countRepoLang = await SearchReposit(searchQuery_str, lang_str, null_flg);
 
                label7.Text = countRepoLang;
 
            }


Будет ли это нормальным решением или можно сделать более грамотно?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.10.2018, 22:37
Помогаю со студенческими работами здесь

Как сделать сортировку по поиску целого числа?
Здравствуйте. Подскажите в написание события фильтрации. Пишу обработчик события фильтрации поиска номера квартиры procedure...

Как сделать пул реквест github?
Есть ветка main, я сделал git push и гит на сайте гитхаба создал мне ветку мастер, и теперь гитхаб отказывается делать пулреквест в ветку...

Как сделать обновление у себя в github?
Не работает что-то вроде этого Создаем ссылку на оригинальный репозиторий и назовем ее upstream: git remote add upstream...

Работа с GitHub API в PHP, как сделать авторизацию ?
Суть задачи такая : пользователь авторизуется через OAuth2 в аккаунте GitHub и получает список своих репозиториев. Как сделать это на PHP +...

Существует ли библиотека, реализующая поиск решений аналогичный EXCEL
Подскажите, пожалуйста, существует ли библиотека, реализующая поиск решений аналогичный EXCEL в с#? Может, можно как-то напрямую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru