【问题标题】:Site search in asp .net application在 asp .net 应用程序中进行站点搜索
【发布时间】:2010-06-09 18:13:12
【问题描述】:

我想知道在 ASP .net Web 应用程序中实现站点搜索的最佳实践是什么。用户应该能够输入一些关键字并获得与关键字相关的链接。我刚刚开始研究。如果您能提出自己的想法,那就太好了。

【问题讨论】:

  • 您要搜索的数据是如何存储的,数据库?
  • 这是个好问题。但是我应该在数据库中存储什么?关键字和相应的 URL 还是什么?
  • 那么您希望用户能够搜索什么?
  • 用户应该能够搜索页面中的特定内容。例如,假设有一个网页包含“人力资源政策”等字样。因此,当用户在网站的主页中搜索此关键字时。他应该看到包含“人力资源政策”的页面的链接
  • 我猜你没有使用 CMS,这是静态页面?如果是这样,那么其他人已经回答了,而您正在寻找的是网络爬虫。如果您不想自己实现,可以随时使用谷歌搜索。

标签: .net asp.net search


【解决方案1】:

如果它是一个小型公共网站,您最好使用 Google 作为您的搜索引擎和他们的Custom Search engine 程序。

显然,对于 Google 看不到的内部网站,这不是一个选项。如果您的内容在数据库中,我听说过关于 Lucine 的好消息。如果您在该平台上,SQL Server 2008 的全文搜索功能也可以很好地工作。我认为这就是 SO 用于搜索的内容。或者杰夫曾经玩过它并且有好话要说。不知道他们是否还在使用它。

【讨论】:

【解决方案2】:

这完全取决于您的数据存储在哪里:数据库或静态页面。

对于前者,我会使用 Lucene.NET(查看 SubText 博客,其中最新版本具有良好的实现)。对于后者,我会使用 dtSearch 来抓取网站以创建一个您可以搜索的索引。

【讨论】:

    【解决方案3】:

    如果您使用数据库来存储内容,您可以使用包含大量表格的 SQL Server 全文搜索语言功能,然后您可以对其进行搜索。我们以前习惯这种方法。

    查看详情:http://www.simple-talk.com/sql/learn-sql-server/sql-server-full-text-search-language-features/

    【讨论】:

      【解决方案4】:

      这里是 C# 代码

      protected void OnPaging(object sender, GridViewPageEventArgs e)
      {
          GridView2.PageIndex = e.NewPageIndex;
          this.Searchmyform();
      }
      
      protected void Search(object sender, EventArgs e)
      {
          this.Searchmyform();
      }
      
      private void Searchmyform()
      {
          using (SqlCommand cmd = new SqlCommand())
          {
              string sql = "SELECT * FROM [test].[dbo].[myform]";
      
              if (!string.IsNullOrEmpty(txtSearch.Text.Trim()))
              {
                  sql += "  where name like '" + txtSearch.Text + "%' or contact like '" + txtSearch.Text + "%'" +
                         " or email like '" + txtSearch.Text + "%' ";
              }
      
              cmd.CommandText = sql;
              cmd.Connection = conn;
              using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
              {
                  DataTable dt = new DataTable();
                  sda.Fill(dt);
                  GridView2.DataSource = dt;
                  GridView2.DataBind();
              }
          }
      }
      

      aspx代码是这样的

      <div class="topnav card-body">
          <div class="search-container-lg float-right">
              <asp:TextBox ID="txtSearch" runat="server"
                        OnTextChanged="Search"
                        AutoPostBack="true"
                        placeholder="Search.."
                        CssClass="">
              </asp:TextBox>
      ...
      

      【讨论】:

        猜你喜欢
        • 2010-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-29
        • 1970-01-01
        • 2011-02-18
        • 1970-01-01
        • 2016-02-10
        相关资源
        最近更新 更多