在ASP.NET中创建搜索功能

时间:2012-10-23 21:49:56

标签: asp.net html

我有一个网站,内容(HTML)是使用ASP.NET C#从SQL Server数据库生成的。

现在我想在网站上添加搜索功能,以便用户可以搜索内容。它会显示一个包含结果的结果页面。

这样做的最佳方式是什么?

9 个答案:

答案 0 :(得分:5)

2个最佳解决方案:

  • Google自定义搜索(GCS)
  • SQL Server(手册)

<强> GCS:

在这里,您将完全依赖Google。如果他们在60天内为您的网页编制索引,那么祝您好运。你不会找到没有存储的信息,就像网页一样公开。因此,登录中的任何内容都会忘记它。

您还将依赖搜索引擎优化。如果您不优化页面标题,元描述等,搜索将没有多大用处。

自定义SQL Server:

如果您在数据字段上添加了全文索引,则可以搜索关键字。这是一个不错的解决方案,但请记住索引(否则会很慢)。

我会搜索“SQL Server全文搜索”以获取有关此解决方案的帮助。

这里的好处是您可以完全控制并且可以访问所有内容。

修改

当然还有许多其他解决方案。我还建议调查Lucene,或者在Lucene之上的一些实现,例如Solr。然而,所有搜索功能通常都非常困难且耗时,因此我的前两个建议。

在我工作的公司,我们之前使用过FAST,今天就使用Apptus。

编辑2:

今天我只建议一个解决方案:ElasticSearch。这是一个很好的解决方案;易于使用;适用于所有平台;基于一个很好的REST api和JSON,并且表现非常好。

答案 1 :(得分:2)

答案 2 :(得分:1)

您的网页是从SQL数据库生成的。我认为可以安全地假设相关数据也在于SQL DB而不是asp模板或C#代码。要搜索该数据,您可以根据contains("search term")函数向数据库写入多个查询。

您可以使用简单的搜索来执行所有这些查询,也可以使用高级搜索,您可以根据要执行的查询来提供复选框以优化搜索。

这比对生成的内容进行原始搜索更有意义,imo。

答案 3 :(得分:1)

答案 4 :(得分:1)

如果您使用的是SOL DB,请在其中启用自己的搜索框代码。例如,我正在创建一个视频门户,我正在使用以下代码通过我自己的搜索框搜索视频,

    <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 '%'+@SearchText+'%'", sqlCon);
        sqlCon.Open();
        sqlCmd.Parameters.AddWithValue("@SearchText",userName);
        SqlDataReader reader=null;
        reader = sqlCmd.ExecuteReader();
        while(reader.Read())
        {
            lstStr.Add(reader["OldFileName"].ToString());
        }
        return lstStr;
    }

我已经创建了一个自动完成框。这里的主要内容是我们可以使用自己的代码。 。

答案 5 :(得分:0)

知道您喜欢哪种方向的搜索功能,而不知道您喜欢哪种语言/并且使用起来很舒服,这有点困难..

那么,简单的事情怎么样?并使用托管搜索?

此网站免费提供,最高可达1000个,您也可以使用它进行各种报告。看起来您只需在网站中添加一些简单的HTML即可使其全部正常运行。

您还可以按需重新编制索引,并为您设置计划。无需等待谷歌..

该网站为Site Level

答案 6 :(得分:0)

使用Google搜索

*如果可能,您可以使用 Sharepoint 进行网站开发,每个网站都有搜索功能。

答案 7 :(得分:0)

答案 8 :(得分:0)

如果您的内容存储在SQL数据库中,并且您需要在该数据库中搜索它 - 那么您需要某种查询构建器。 市场上有一些。我可以记住Aspose Query和EasyQuery,但如果google用于“查询构建器asp.net”或类似的东西,你会发现更多。