Создание функции поиска в ASP.NET

У меня есть веб-сайт, этот контент (HTML) создается с использованием ASP.NET С# из базы данных SQL Server.

Теперь я хочу добавить функцию поиска на веб-сайт, чтобы пользователи могли искать контент. Это приведет к созданию страницы результатов с результатами.

Каков наилучший способ сделать это?

Ответ 1

Два лучших решения:

  • Пользовательский поиск Google (GCS)
  • SQL Server (руководство)

GCS:

Здесь вы полностью положитесь на Google. Если они индексируют вашу веб-страницу за 60 дней, то удачи. Вы не найдете информацию, которая не хранится, публично, как веб-страница. Поэтому, любой контент в логине, забудьте его.

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

Пользовательский SQL Server:

Если вы поместите полный текстовый индекс в свои поля данных, вы можете искать ключевые слова. Это достойное решение, но помните индексы (иначе это будет очень медленно).

Я бы поискал "Полный текстовый поиск SQL Server" для получения помощи по этому решению.

Преимущество здесь в том, что у вас есть полный контроль, и вы можете получить доступ ко всему.

EDIT:

Конечно, есть много других решений. Я также предложил бы изучить Lucene или некоторые реализации поверх Lucene, такие как Solr. Однако все функции поиска обычно очень сложны и требуют времени, отныне мои первые два предложения.

В компании, над которой я работаю, мы ранее использовали FAST и сегодня использовали Apptus.

ИЗМЕНИТЬ 2:

Сегодня я бы посоветовал только одно решение: ElasticSearch. Это отличное решение; легко работать; работает на всех платформах; основанный на хорошем REST api и JSON и работает очень хорошо.

Ответ 3

Ваши страницы создаются из базы данных SQL. Я думаю, что можно с уверенностью предположить, что соответствующие данные также лежат в базе данных SQL, а не в asp-шаблонах или в коде С#. Чтобы выполнить поиск этих данных, вы можете записать несколько запросов в базу данных на основе функции contains("search term").

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

Это будет иметь больше смысла, чем выполнение необработанного поиска по сгенерированному контенту, imo.

Ответ 5

Если вы используете SOL DB Try Включите свой собственный код для окна поиска в нем. Например, я создаю видео-портал, я ищу видео в своем поле поиска, используя следующий код,

    <script type="text/javascript">
    $(document).ready(function () {
        SearchText();
    });
    function SearchText() {
        $(".autosuggest").autocomplete({
            source: function (request, response) {
                $.ajax({
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: "Home.aspx/GetAutoCompleteData",
                    data: "{'username':'" + document.getElementById('txtSearch').value + "'}",
                    dataType: "json",
                    success: function (data) {
                        response(data.d);
                    },
                    error: function (result) {
                        alert("Error");
                    }
                });
            }
        });
    }

    $(".autosuggest").autocomplete({
        source: function (request, response) {
            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: "Home.aspx/GetAutoCompleteData",
                data: "{'username':'" + document.getElementById('txtSearch').value + "'}",
                dataType: "json",
                success: function (data) {
                    response(data.d);
                },
                error: function (result) {
                    alert("Error");
                }
            });
        }
    });
</script>

     /// <summary>
    /// To AutoSearch. . .
    /// </summary>
    /// <param name="userName"></param>
    /// <returns></returns>
    public List<string> GetAutoComplete(string userName)
    {
        List<string> lstStr = new List<string>();
        sqlCon = new SqlConnection(strCon);
        sqlCmd=new SqlCommand("select DISTINCT OldFileName from UploadedVideo where OldFileName LIKE '%'[email protected]+'%'", sqlCon);
        sqlCon.Open();
        sqlCmd.Parameters.AddWithValue("@SearchText",userName);
        SqlDataReader reader=null;
        reader = sqlCmd.ExecuteReader();
        while(reader.Read())
        {
            lstStr.Add(reader["OldFileName"].ToString());
        }
        return lstStr;
    }

Я создал авто полную коробку. Главное здесь - мы можем использовать наш собственный код.,.

Ответ 6

Немного сложно узнать, в каком направлении вы предпочитаете работать с функцией поиска, и не зная, какие языки вы предпочитаете/и удобны в использовании.

Итак, как насчет чего-то простого? и использовать размещенный поиск?

Этот сайт здесь, бесплатно, будет индексировать до 1000, и вы получите с ним всевозможные отчеты. Похоже, вам просто нужно добавить на свой сайт простой HTML-код, чтобы все это работало.

вы также можете повторно индексировать по требованию, а также настроить расписание, чтобы сделать это за вас. Не нужно ждать Google.

Сайт Уровень сайта

Ответ 7

Использовать Google Поиск

* Если возможно, вы можете использовать Sharepoint для разработки веб-сайта, а поиск уже существует для каждого веб-сайта.

Ответ 9

Если ваш контент хранится в базе данных SQL, и вам нужно его искать внутри этого БД - тогда вам нужен какой-то построитель запросов. Есть несколько из них на рынке. Я могу помнить Aspose Query и EasyQuery, но вы найдете больше, если google для "builder запроса asp.net" или что-то подобное.