как поместить слова в переменную и проверить, соответствует ли она данным в базе данных - PullRequest
1 голос
/ 16 мая 2011

Я использую MSSQL и C # для написания поисковой системы. Я получил несколько стоп-слов в базе данных. На моей странице default.aspx я получил текстовое поле и кнопку поиска. Пользователи могут ввести целое предложение в текстовое поле.

Я написал код для поиска по одному ключевому слову, но не по целому предложению. Это функция в default.aspx.cs

 private void ImageSearch()
{


    if (txtSearch.Text.Trim().Equals(""))
    {
        //when types nothing
        txtSearch.Focus();
        Warning.Text = "Please enter the keyword to search";
        //display message
        return;
    }
    else
    {
        int check = Process.CheckStopWord(txtSearch.Text.Trim());
        //check if the keyword is stop word
        if (check == 0)
        {
            txtSearch.Focus();
            Warning.Text = "No stop word found";
        }
        else
        {
            txtSearch.Focus();
            Warning.Text = "Found Stop word";
        }

    }
}

и для функции контрольного слова

public static int CheckStopWord(string keyword)
{
    string check = "0";
    string query = "SELECT COUNT (stopword) FROM stopwordtb WHERE [stopword] like '" + keyword + "'";
    //count how many stop word matches the keyword entered, return a string of a number
    accessDB dbaccess = new accessDB();
    DataSet ds = dbaccess.queryData(query);
    DataTable dt = ds.Tables[0];
    if (dt.Rows[0][0].ToString() == check)
    {
        return 0;
        //keyword != stop word in stopwordtb
        // begin search in image database - not implemented yet

    }
    else
    {
        return 1;
        //keyword = stop word in stopwordtb
    }

}

Моя проблема в том, что если пользователь введет целое предложение?

Например, если он набирает «Дерево» в текстовом поле, но «The» - это стоп-слово, поэтому я просто проигнорирую «the» и просто поищу в базе данных изображений «tree».

Как я могу поместить предложение в переменные и искать каждую из них в отдельности? или есть более быстрый способ?

Надеюсь, кто-нибудь может мне помочь. Спасибо

Ответы [ 3 ]

3 голосов
/ 16 мая 2011

Вам нужно что-то вроде string[] words = sentence.Split(' ');, затем проверьте каждую запись в массиве слов.

0 голосов
/ 22 сентября 2011

У меня есть аналогичная функция в C #.Он будет принимать строку или предложение, например: INPUT: Доступ к файлу Mr Brown OUTPUT: «Файл» и «access» и «Mr» и «Brown» «Переведено в SQL:« Файл »и« access »и« Mr »и "Браун" '

    private static string formatStringToSQLForFullTEXTSEARCH(string subject)
    {
                string[] subArray  = subject.Trim().Split(' ');
                string newSubject  = "";            

                newSubject = "";
                if (subArray != null && subArray.Length > 0)
                {
                    newSubject = "'" + subArray[0] + "'";
                    for (int i = 1; i < subArray.Length; i++)
                    {
                        newSubject += " and '" + subArray[i]+"'";
                    }
                }
    return newSubject;
    }

Надеюсь, это кому-нибудь поможет!

0 голосов
/ 16 мая 2011

Перед поиском в базе данных вы можете сначала разбить предложение, а затем проверить, что каждое слово является стоп-словом, используя цикл (например: while-loop),

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...