我有一个网站,该内容 (HTML) 是使用 ASP.NET C# 从 SQL Server 数据库生成的。
现在我想在网站上添加一个搜索功能,以便用户可以搜索内容。它将打开一个带有结果的结果页面。
做这个的最好方式是什么?
2个最佳解决方案:
地面站:
在这里,您将完全依赖 Google。如果他们在 60 天内将您的网页编入索引,那么祝您好运。您不会找到未存储的信息,就像网页一样公开。因此,登录内的任何内容,都算了。
您还将依赖搜索引擎优化。如果你不优化你的页面标题、元描述等,搜索将没有多大用处。
自定义 SQL 服务器:
如果您在数据字段上放置全文索引,则可以搜索关键字。这是一个不错的解决方案,但请记住索引(否则会很慢)。
我会搜索“SQL Server 全文搜索”以获取有关此解决方案的帮助。
这里的好处是您可以完全控制并且可以访问所有内容。
编辑:
当然还有很多其他的解决方案。我还建议研究Lucene或基于 Lucene 的一些实现,例如Solr。然而,所有搜索功能通常都非常困难且耗时,因此我的前两个建议是。
在我工作的公司中,我们以前使用 FAST,现在使用 Apptus。
编辑2:
今天我只建议一种解决方案:ElasticSearch。这是一个很好的解决方案;易于使用;适用于所有平台;基于一个不错的 REST api 和 JSON,并且性能非常好。
或者 ...
谷歌自定义搜索:http ://www.google.com/coop/cse/
If you are using the SOL DB Try Enable your own code for Search box in it. For example i'm creating a Video Portal, i'm searching videos by my own Search box by using the following Code,
<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;
}
I've Created a auto Complete box. The Main thing here is we can use our own code. . .
使用 Lucene(Apache Lucene 项目开发开源搜索软件)。
您的页面是从 SQL 数据库生成的。我认为可以安全地假设相关数据也位于 SQL DB 中,而不是 asp 模板或 C# 代码中。要搜索该数据,您可以根据contains("search term")
函数向数据库写入多个查询。
您可以有一个简单的搜索来执行所有这些查询,也可以有一个高级搜索,您可以在其中提供基于要执行的查询以优化搜索的复选框。
这比对生成的内容进行原始搜索更有意义,imo。
使用谷歌搜索
*如果可能,您可以使用Sharepoint进行网站开发,并且每个网站都已提供 Search。
知道您更喜欢使用搜索功能的哪个方向,并且不知道您喜欢/并且习惯使用的语言是什么有点困难。
那么,简单的事情怎么样?并使用托管搜索?
此处的此站点免费,最多可索引 1000 个,并且您也可以使用它获得各种报告。看起来您只需在您的网站中添加一些简单的 HTML 即可使其正常运行。
您还可以按需重新编制索引,还可以设置一个时间表来为您做这件事。无需等待谷歌..
该站点是站点级别
在这里你可以找到一个最好的教程。
http://www.codeproject.com/Articles/42454/Implement-Search-Functionality-into-your-ASP-NET-M
如果您的内容存储在 SQL 数据库中并且您需要在该数据库中搜索它 - 那么您需要某种查询构建器。市场上有一些。我记得 Aspose Query 和 EasyQuery,但如果谷歌搜索“query builder asp.net”或类似的东西,你会发现更多。