如何在“ github.com”中进行类似的搜索?

时间:2018-10-08 10:31:59

标签: c# octokit.net

使用-“ octokit.net”。
我对搜索“存储库”,“用户”并按语言过滤结果感兴趣。

场景:
1.用户。输入搜索词组;
2.网站。执行搜索;
3.网站。显示结果:
一种。储存库;
b。用户;
筛选条件:
-语言;

单击“存储库”或“用户”按钮后,结果将显示在表中。
单击语言(例如,``C#'')后,将对结果进行过滤。

常规搜索结果:
储存库
-存储库-108,951个结果
-C#(存储库)-4,315个结果
用户
-用户-〜4K
-C#(用户)-〜72

如何重复此脚本搜索引擎?
我编写了初步代码,但我不知道如何使其更正确地工作。

方法未完成“ searchUser(字符串searchQuery_str)”。
我打算通过类似于“ SearchReposit(字符串searchQuery_str,字符串lang_str)”

来做到这一点。

当前代码逻辑:
-搜索所有存储库:
-发送请求;
-我们收到答案了
-搜索使用C#的存储库:
-发送请求;
-我们通过语言“ C#”过滤请求;
-我们收到答案了
那些。现在,针对每种情况都将执行一个单独的请求(var请求),但是在我看来,您需要执行一个请求,然后对它执行以下操作:
-过滤器;
-排序;
-清除过滤;
-明确排序。

问题是:如何使执行一个请求成为可能,然后对该请求执行以下操作:
-过滤器;
-排序;
-清除过滤;
-清除排序
-计算搜索结果的数量?

我是否正确理解逻辑,是否可以这样做?

如果我正确理解,搜索“用户”的工作将类似于搜索“存储库”。

链接到搜索文档-Link

enter image description here
enter image description here

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);
}

1 个答案:

答案 0 :(得分:0)

更改了变量request
-是var-变成了SearchRepositoriesRequest;
-是local - became全球性的;

更改了方法“ SearchReposit(字符串searchQuery_str,字符串lang_str)”
-添加了参数“ bool null_flg”-变成了“ SearchReposit(字符串searchQuery_str,字符串lang_str和bool null_flg)”;
-添加了检查“ bool null_flg”;

if (null_flg == false)
{
request = new SearchRepositoriesRequest (searchQuery_str);
}

代码看起来像这样

SearchRepositoriesRequest request;
    public async Task<string> SearchReposit(string searchQuery_str, string lang_str, bool null_flg)
            {
                //SearchRepositoriesRequest request = new SearchRepositoriesRequest();
                // Поиск по "Реозитариям"
                // if (request == null) // ошб
                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;

            }

这将是正常的决定还是可以使其胜任?