SharePoint 2010 通配符搜索
2011-08-08 14:19
555 查看
SharePoint 2010 提供了很强大的搜索功能,你可以通过很简单的配置就可以使用强大的搜索功能,还包括强大的wildcard 搜索,唯一遗憾的时SharePoint 2010 不支持前缀的wildcard 搜索。
我们先来体验下后缀的Wildcard 搜索,如果你想搜索所有包含Share相关的文档, 直接输入Share*,就能搜索到SharePoint, Shared等匹配的内容。
但是你不可以输入*Point来搜索SharePoint。有什么办法可以可以让SharePoint 支持suffix wildcard 搜索吗?
我们先来看看第一种方法:搜索Content Database,这个方法有自己的优点和局限性
优点:我们可以任意写我们的query语句,SQL 能做的,我们都能做。
缺点:只能在一个内容数据库进行搜索,也就是说,搜索的范围不能超越网站集(site Collection),另外微软并不建议直接操作数据库。
首先创建一个Search webpart,核心代码比较简单,关键是你如何处理UI, 让它看起来跟SharePoint 搜索基本相似。
以上代码很简单,只需要简单解释一下两处:
1. string query = HttpContext.Current.Request.QueryString["K"] != null
? HttpContext.Current.Request.QueryString["K"].ToString() : "";
这段代码用来获得我们搜索的关键字,
2. SPSecurity.RunWithElevatedPrivileges(
delegate()
{});
我们把读取数据库内容的代码放在RunWithElevatedPrivileges内部,这样我们就不用去关心用户没有权限去读取数据库内容的问题。
然后创建一个页面,加入我们的web
part,并在SharePoint 搜索设置的页面设置为我们创建的页面就可以了。
开发起来比较简单,关键的部分是如果构建自己的SQL 查询语句和如果显示查询结果, 限制也很多毕竟微软不建议直接操作数据库,这里只是提供一中search的解决方案。
下一篇我们了解如果在SharePoint
search的基础上也支持前缀搜索。
我们先来体验下后缀的Wildcard 搜索,如果你想搜索所有包含Share相关的文档, 直接输入Share*,就能搜索到SharePoint, Shared等匹配的内容。
但是你不可以输入*Point来搜索SharePoint。有什么办法可以可以让SharePoint 支持suffix wildcard 搜索吗?
我们先来看看第一种方法:搜索Content Database,这个方法有自己的优点和局限性
优点:我们可以任意写我们的query语句,SQL 能做的,我们都能做。
缺点:只能在一个内容数据库进行搜索,也就是说,搜索的范围不能超越网站集(site Collection),另外微软并不建议直接操作数据库。
首先创建一个Search webpart,核心代码比较简单,关键是你如何处理UI, 让它看起来跟SharePoint 搜索基本相似。
public partial class SearchFilesUserControl : UserControl { DataTable results = new DataTable(); string conn = "Data Source=database Server; Initial Catalog={0}; Integrated Security=True;"; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string query = HttpContext.Current.Request.QueryString["K"] != null ? HttpContext.Current.Request.QueryString["K"].ToString() : ""; string[] querys = query.Trim().Split(' '); string contentDB = string.Empty; if (SPContext.Current != null) { contentDB = SPContext.Current.Site.ContentDatabase.Name; } else { // build your site } conn = string.Format(conn, contentDB); DataTable dt = QuickGetTable(conn, querys); searchResult.DataSource = dt; searchResult.DataBind(); } } public DataTable QuickGetTable(string connectionStr, string[] keys) { try { SPSecurity.RunWithElevatedPrivileges( delegate() { using (SqlConnection conn = new SqlConnection(connectionStr)) { conn.Open(); SqlCommand command = new SqlCommand(ConfigurationManager.AppSettings["sqlQueryString"], conn); SqlDataAdapter adapter = new SqlDataAdapter(command); adapter.Fill(results); conn.Close(); } }); } catch (Exception ex) { throw ex; } return results; } protected void searchResult_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { GridViewRow row = e.Row; DataRowView rowView = (DataRowView)row.DataItem; byte[] bDesp =(byte[]) rowView["Filedesp"]; string desp = System.Text.Encoding.Default.GetString(bDesp); HtmlGenericControl fileDescription = (HtmlGenericControl)row.FindControl("fileDesp"); fileDescription.InnerText = desp.Substring(0, 20); } } }
以上代码很简单,只需要简单解释一下两处:
1. string query = HttpContext.Current.Request.QueryString["K"] != null
? HttpContext.Current.Request.QueryString["K"].ToString() : "";
这段代码用来获得我们搜索的关键字,
2. SPSecurity.RunWithElevatedPrivileges(
delegate()
{});
我们把读取数据库内容的代码放在RunWithElevatedPrivileges内部,这样我们就不用去关心用户没有权限去读取数据库内容的问题。
然后创建一个页面,加入我们的web
part,并在SharePoint 搜索设置的页面设置为我们创建的页面就可以了。
开发起来比较简单,关键的部分是如果构建自己的SQL 查询语句和如果显示查询结果, 限制也很多毕竟微软不建议直接操作数据库,这里只是提供一中search的解决方案。
下一篇我们了解如果在SharePoint
search的基础上也支持前缀搜索。
相关文章推荐
- sharepoint 2010 找不到搜索不到ad里的用户
- 让SharePoint 2010可以搜索PDF文件类型
- sharepoint 2010 配置搜索页面的搜素结果链接使用新页面打开
- 最佳拍档-Lync 2010与SharePoint的专家搜索
- SharePoint 2010 文档管理系列(二)文档搜索
- 在使用直观升级升级到 SharePoint 2010 的自定义搜索页面上显示服务器功能区和“网站操作”菜单
- SharePoint 2010 搜索结果没有显示部分文件
- SharePoint 2010:搜索服务当前处于脱机状态
- sharepoint 2010 搜索功能介绍 -- 金大昊(jindahao)
- SharePoint 2010搜索起步(下)
- SharePoint 2010 搜索的简单设置
- SharePoint 2010 的企业级搜索技术文章
- SharePoint 2010 WebPart开发——获取最热门搜索查询WebPart(code)
- SharePoint 2013/2010 根据当前用户的某个属性过滤搜索结果
- SharePoint 2010 配置搜索范围
- SharePoint 2010搜索服务比较:Foundation vs Server vs FAST
- Sharepoint 2010 隐藏基本搜索中心搜索结果左侧的分类条件
- SharePoint 2010 文档管理系列之文档搜索
- SharePoint 2010开发实例精选——可排序的搜索核心结果
- SharePoint 2010 人员选择器搜索范围的限定