看资料知道sharepoint中模糊搜索可以用FullTextSqlQuery,因此我们就可以业务需求进行模糊搜索的自定义开发,可惜前一段时间自己写了一个模糊搜索,发现了一个问题,暂不知道如何过滤管理中心设置好的规则,不知道有哪位大神知道如何用代码来写模糊搜索,并且能根据管理中心设置好的规则进行过滤?请留言或者给个链接,先谢谢了
先把自己的代码贴出来:
/// <summary> /// 糊查询(爬网搜索) /// </summary> /// <param name="query">查询语句</param> /// <param name="startRow">从第N行开始取数据(分页使用)</param> /// <returns></returns> public static DataTable DimSearch(string query, int startRow) { DataTable result = new DataTable(); FullTextSqlQuery fullQuery = new FullTextSqlQuery(SPContext.Current.Site); fullQuery.Culture = System.Globalization.CultureInfo.InvariantCulture; fullQuery.QueryText = query; fullQuery.ResultTypes = ResultType.RelevantResults;//搜索结果类型 fullQuery.EnableStemming = false; fullQuery.IgnoreAllNoiseQuery = true;//是否应执行搜索查询,如果查询文本只包含干扰词 fullQuery.TrimDuplicates = true;//是否删除重复项 fullQuery.StartRow = startRow; fullQuery.RowLimit = 200;//如果不设置此属性,系统会自动默认查询50条 fullQuery.KeywordInclusion = KeywordInclusion.AnyKeyword; if (SPSecurity.AuthenticationMode != System.Web.Configuration.AuthenticationMode.Windows) fullQuery.AuthenticationType = QueryAuthenticationType.PluggableAuthenticatedQuery; else fullQuery.AuthenticationType = QueryAuthenticationType.NtAuthenticatedQuery; ResultTableCollection rt = fullQuery.Execute(); ResultTable resultTable = rt[ResultType.RelevantResults]; result.Load(resultTable, LoadOption.OverwriteChanges); return result; }
sql代码如下:
SELECT LastModifiedTime,ContentClass,WorkId,Rank,Title,Author,Size,Path,Write,Filename,SiteName,PictureThumbnailURL,SiteTitle,CollapsingStatus,HitHighlightedSummary, HitHighlightedProperties,PictureURL,IsDocument,WorkEmail,CreatedBy,FileExtension from scope() where contains(defaultproperties,'搜索关键字')