// 获得查重检索命中结果 // parameters: // lStart 返回命中结果集起始位置 // lCount 返回命中结果集的记录个数 // strBrowseInfoStyle 所返回的DupSearchResult中包含哪些信息 // "cols" 包含浏览列 // "excludecolsoflowthreshold" 不包含权值低于阈值的行的浏览列。要在同时包含cols时才起作用 // searchresults 包含记录信息的DupSearchResult数组 public LibraryServerResult GetDupSearchResult( SessionInfo sessioninfo, long lStart, long lCount, string strBrowseInfoStyle, out DupSearchResult[] searchresults) { string strError = ""; searchresults = null; int nRet = 0; LibraryServerResult result = new LibraryServerResult(); RmsChannel channel = sessioninfo.Channels.GetChannel(this.WsUrl); if (channel == null) { strError = "get channel error"; goto ERROR1; } DupResultSet dupset = sessioninfo.DupResultSet; if (dupset == null) { strError = "查重结果集不存在"; goto ERROR1; } dupset.EnsureCreateIndex(getTempFileName); int nCount = (int)lCount; int nStart = (int)lStart; if (nCount == -1) { nCount = (int)dupset.Count - nStart; if (nCount < 0) { nCount = 0; } } else { if (nCount > (int)dupset.Count - nStart) { nCount = (int)dupset.Count - nStart; if (nCount < 0) { nCount = 0; } } } bool bDetail = (StringUtil.IsInList("detail", strBrowseInfoStyle)); bool bExcludeCols = (StringUtil.IsInList("excludecolsoflowthreshold", strBrowseInfoStyle) == true); bool bCols = (StringUtil.IsInList("cols", strBrowseInfoStyle) == true); List <string> pathlist = new List <string>(); List <DupSearchResult> results = new List <DupSearchResult>(); for (int i = 0; i < nCount; i++) // BUG nStart + { DupLineItem item = (DupLineItem)dupset[nStart + i]; // changed DupSearchResult result_item = new DupSearchResult(); results.Add(result_item); result_item.Path = item.Path; result_item.Weight = item.Weight; result_item.Threshold = item.Threshold; if (bDetail) { result_item.Detail = item.Detail; } // paths[i] = item.Path; if (bCols == true) { if (bExcludeCols == true && item.Weight < item.Threshold) { } else { pathlist.Add(item.Path); } } } if (pathlist.Count > 0) { // string[] paths = new string[pathlist.Count]; string[] paths = StringUtil.FromListString(pathlist); nRet = channel.GetBrowseRecords(paths, "cols", out ArrayList aRecord, out strError); if (nRet == -1) { strError = "GetBrowseRecords() error: " + strError; goto ERROR1; } int j = 0; for (int i = 0; i < results.Count; i++) { DupSearchResult result_item = results[i]; if (result_item.Path != pathlist[j]) { continue; } string[] cols = (string[])aRecord[j]; results[i].Cols = cols; // style中不包含id j++; if (j >= pathlist.Count) { break; } } } searchresults = new DupSearchResult[results.Count]; results.CopyTo(searchresults); result.Value = searchresults.Length; return(result); ERROR1: result.Value = -1; result.ErrorCode = ErrorCode.SystemError; result.ErrorInfo = strError; return(result); }
// 获得查重检索命中结果 // parameters: // lStart 返回命中结果集起始位置 // lCount 返回命中结果集的记录个数 // strBrowseInfoStyle 所返回的DupSearchResult中包含哪些信息 // "cols" 包含浏览列 // "excludecolsoflowthreshold" 不包含权值低于阈值的行的浏览列。要在同时包含cols时才起作用 // searchresults 包含记录信息的DupSearchResult数组 public LibraryServerResult GetDupSearchResult( SessionInfo sessioninfo, long lStart, long lCount, string strBrowseInfoStyle, out DupSearchResult[] searchresults) { string strError = ""; searchresults = null; int nRet = 0; LibraryServerResult result = new LibraryServerResult(); RmsChannel channel = sessioninfo.Channels.GetChannel(this.WsUrl); if (channel == null) { strError = "get channel error"; goto ERROR1; } DupResultSet dupset = sessioninfo.DupResultSet; if (dupset == null) { strError = "查重结果集不存在"; goto ERROR1; } dupset.EnsureCreateIndex(getTempFileName); int nCount = (int)lCount; int nStart = (int)lStart; if (nCount == -1) { nCount = (int)dupset.Count - nStart; if (nCount < 0) nCount = 0; } else { if (nCount > (int)dupset.Count - nStart) { nCount = (int)dupset.Count - nStart; if (nCount < 0) nCount = 0; } } bool bExcludeCols = (StringUtil.IsInList("excludecolsoflowthreshold", strBrowseInfoStyle) == true); bool bCols = (StringUtil.IsInList("cols", strBrowseInfoStyle) == true); List<string> pathlist = new List<string>(); List<DupSearchResult> results = new List<DupSearchResult>(); for (int i = 0; i < nCount; i++) // BUG nStart + { DupLineItem item = (DupLineItem)dupset[nStart + i]; // changed DupSearchResult result_item = new DupSearchResult(); results.Add(result_item); result_item.Path = item.Path; result_item.Weight = item.Weight; result_item.Threshold = item.Threshold; // paths[i] = item.Path; if (bCols == true) { if (bExcludeCols == true && item.Weight < item.Threshold) { } else pathlist.Add(item.Path); } } if (pathlist.Count > 0) { // string[] paths = new string[pathlist.Count]; string[] paths = StringUtil.FromListString(pathlist); ArrayList aRecord = null; nRet = channel.GetBrowseRecords(paths, "cols", out aRecord, out strError); if (nRet == -1) { strError = "GetBrowseRecords() error: " + strError; goto ERROR1; } int j = 0; for (int i = 0; i < results.Count; i++) { DupSearchResult result_item = results[i]; if (result_item.Path != pathlist[j]) continue; string[] cols = (string[])aRecord[j]; results[i].Cols = cols; // style中不包含id j++; if (j >= pathlist.Count) break; } } searchresults = new DupSearchResult[results.Count]; results.CopyTo(searchresults); result.Value = searchresults.Length; return result; ERROR1: result.Value = -1; result.ErrorCode = ErrorCode.SystemError; result.ErrorInfo = strError; return result; }