/// <summary> /// /// </summary> /// <param name="testo"></param> /// <param name="idReg"></param> /// <param name="numPage"></param> /// <param name="numTotPage"></param> /// <param name="nRec"></param> /// <returns></returns> public ArrayList FullTextSearch(string testo, string idReg, int numPage, out int numTotPage, out int nRec) { FullTextSearchContext context = new FullTextSearchContext(); context.TextToSearch = testo; context.RequestedPageNumber = numPage; ArrayList list = this.FullTextSearch(ref context); numTotPage = context.TotalPageNumber; nRec = context.TotalRecordCount; return(list); }
/// <summary> /// /// </summary> /// <param name="context"></param> /// <returns></returns> public ArrayList FullTextSearch(ref FullTextSearchContext context) { int totalPageNumber, totalRecordCount; ArrayList retValue = this.FullTextSearch(context.TextToSearch, string.Empty, context.RequestedPageNumber, out totalPageNumber, out totalRecordCount); context.TotalPageNumber = totalPageNumber; context.TotalRecordCount = totalRecordCount; return(retValue); }
public static InfoDocumento[] FullTextSearch(InfoUtente infoUtente, ref FullTextSearchContext context) { InfoDocumento[] retValue = null; try { retValue = docsPaWS.FullTextSearch(infoUtente, ref context); } catch (System.Exception ex) { UIManager.AdministrationManager.DiagnosticError(ex); return(null); } return(retValue); }
public exportDatiManager( string oggettoExport, string tipologiaExport, string titolo, DocsPaWR.InfoUtente userInfo, DocsPaWR.Ruolo userRuolo, DocsPaWR.FullTextSearchContext context, string docOrFasc, String[] objSystemId) { this._oggettoExport = oggettoExport; // doc o fasc o trasm..... this._tipologiaExport = tipologiaExport; // PDF o XLS this._titolo = titolo; this._userInfo = userInfo; this._userRuolo = userRuolo; this._context = context; this._docOrFasc = docOrFasc; this._objSystemId = objSystemId; }
/// <summary> /// Ricerca fulltext per il documentale ETDOCS /// </summary> /// <param name="infoUtente"></param> /// <param name="context"></param> /// <returns></returns> protected virtual string[] SearchETDOCS(InfoUtente infoUtente, FullTextSearchContext context) { ArrayList files = new ArrayList(); FullTextIndexingServices services = new FullTextIndexingServices(); string catalog = !string.IsNullOrEmpty(DocsPaUtils.Configuration.InitConfigurationKeys.GetValue("0", "BE_FULLTEXT_CATALOG")) ? DocsPaUtils.Configuration.InitConfigurationKeys.GetValue("0", "BE_FULLTEXT_CATALOG") : "CATALOG_MIT"; int maxResultRows = !string.IsNullOrEmpty(DocsPaUtils.Configuration.InitConfigurationKeys.GetValue("0", "BE_FULLTEXT_MAXROWS")) ? int.Parse(DocsPaUtils.Configuration.InitConfigurationKeys.GetValue("0", "BE_FULLTEXT_MAXROWS")) : 200; FullTextResultInfo[] fullTextResult = services.Search(context.TextToSearch, catalog, maxResultRows); //FullTextResultInfo[] fullTextResult = services.Search(context.TextToSearch, this.GetConfig(FULLTEXT_INDEX_CATALOG), this.MaxRows); foreach (DocsPaDocumentale.FullTextSearch.FullTextResultInfo item in fullTextResult) { files.Add(item.Name); } return((string[])files.ToArray(typeof(string))); }
/// <summary> /// Ricerca semplice fulltext /// /// </summary> /// <param name="infoUtente"></param> /// <param name="context">Informazioni di contesto per la ricerca</param> /// <returns></returns> public ArrayList simpleSearch(InfoUtente infoUtente, ref FullTextSearchContext context) { ArrayList result = new ArrayList(); FullTextIndexingServices services = new FullTextIndexingServices(); string catalog = !string.IsNullOrEmpty(DocsPaUtils.Configuration.InitConfigurationKeys.GetValue("0", "BE_FULLTEXT_CATALOG")) ? DocsPaUtils.Configuration.InitConfigurationKeys.GetValue("0", "BE_FULLTEXT_CATALOG") : "CATALOG_MIT"; int maxResultRows = !string.IsNullOrEmpty(DocsPaUtils.Configuration.InitConfigurationKeys.GetValue("0", "BE_FULLTEXT_MAXROWS")) ? int.Parse(DocsPaUtils.Configuration.InitConfigurationKeys.GetValue("0", "BE_FULLTEXT_MAXROWS")) : 200; FullTextResultInfo[] fullTextResult = services.Search(context.TextToSearch, catalog, maxResultRows); //FullTextResultInfo[] fullTextResult = services.Search(context.TextToSearch, this.GetConfig(FULLTEXT_INDEX_CATALOG), this.MaxRows); foreach (DocsPaDocumentale.FullTextSearch.FullTextResultInfo item in fullTextResult) { result.Add(item.Name); } return(result); }
/// <summary> /// Ricerca fulltext /// </summary> /// <param name="infoUtente"></param> /// <param name="context">Informazioni di contesto per la ricerca</param> /// <returns></returns> public ArrayList Search(InfoUtente infoUtente, ref FullTextSearchContext context) { string[] fullTextResult = null; if (context.SearchResultList != null && context.SearchResultList.Length > 0) { // Ricerca già effettuata, reperimento dall'oggetto di contesto // dei risultati precedenti evitando così una dispendiosa // chiamata al sistema documentale fullTextResult = context.SearchResultList; } else { // Prima ricerca, chiamata al documentale fullTextResult = this.SearchETDOCS(infoUtente, context); // Reperimento identificativi dei documenti in docspa // che contengono uno o più file reperiti dalla ricerca fulltext fullTextResult = this.GetIDDocumentiETDOCS(fullTextResult, infoUtente); } // Estrazione dei soli id relativi alla pagina richiesta string[] documentsToRead = this.ExtractPageData(fullTextResult, context.RequestedPageNumber); // Calcolo numero pagine e record estratti int numDocs = fullTextResult.Length; int numTotPage = (numDocs / PAGE_SIZE); if (numTotPage * PAGE_SIZE < numDocs) { numTotPage++; } context.SearchResultList = fullTextResult; context.TotalPageNumber = numTotPage; context.TotalRecordCount = numDocs; // Reperimento dettagli sui documenti return(this.GetDocuments(documentsToRead, infoUtente)); }
public exportDatiManager( string oggettoExport, string tipologiaExport, string titolo, DocsPaWR.InfoUtente userInfo, DocsPaWR.Ruolo userRuolo, DocsPaWR.FullTextSearchContext context, string docOrFasc, ArrayList campiSelezionati, String[] objSystemId) { this._oggettoExport = oggettoExport; // doc o fasc o trasm..... this._tipologiaExport = tipologiaExport; // PDF o XLS this._titolo = titolo; this._userInfo = userInfo; this._userRuolo = userRuolo; this._context = context; this._docOrFasc = docOrFasc; this._campiSelezionati = campiSelezionati; // Impostazione della lista dei system id degli oggetti selezionati this._objSystemId = objSystemId; }
/// <summary> /// /// </summary> /// <param name="context"></param> /// <returns></returns> public ArrayList simpleFullTextSearch(ref FullTextSearchContext context) { return(new ArrayList()); }
/// <summary> /// /// </summary> /// <param name="context"></param> /// <returns></returns> public ArrayList FullTextSearch(ref FullTextSearchContext context) { RicercaFullText ricercaFullText = new RicercaFullText(); return(ricercaFullText.RicercaFT(this.InfoUtente, ref context)); }
/// <summary> /// /// </summary> /// <param name="context"></param> /// <returns></returns> public ArrayList FullTextSearch(ref FullTextSearchContext context) { FullTextSearch fullText = new FullTextSearch(); return(fullText.Search(this.InfoUtente, ref context)); }
/// <summary> /// Ricerca fulltext nell'oggetto document /// /// nb: da fare anche ricerca allegati /// </summary> /// <param name="context"></param> /// <returns></returns> public ArrayList FullTextSearch(ref FullTextSearchContext context) { ArrayList result = new ArrayList(); try { List <string> fullTextResult = null; if (context.SearchResultList != null && context.SearchResultList.Length > 0) { // Ricerca già effettuata, reperimento dall'oggetto di contesto // dei risultati precedenti evitando così una dispendiosa // chiamata al sistema documentale fullTextResult = new List <string>(context.SearchResultList); } else { StructuredQuery strQuery = new StructuredQuery(); strQuery.AddRepository(DctmConfigurations.GetRepositoryName()); strQuery.ObjectType = ObjectTypes.DOCUMENTO; strQuery.IsDatabaseSearch = false; strQuery.IsIncludeAllVersions = false; strQuery.IsIncludeHidden = false; // Inserisce nella ricerca il solo cabinet dell'amministrazione RepositoryScope repositoryScope = new RepositoryScope(); repositoryScope.RepositoryName = DctmConfigurations.GetRepositoryName(); repositoryScope.LocationPath = DocsPaAdminCabinet.getRootAmministrazione(this.InfoUtente); repositoryScope.IsDescend = true; strQuery.Scopes.Add(repositoryScope); ExpressionSet set = new ExpressionSet(); set.AddExpression(new FullTextExpression(context.TextToSearch)); strQuery.RootExpressionSet = set; // Query execution int startIndex = (context.RequestedPageNumber * PAGE_SIZE) - PAGE_SIZE; int maxResults = this.GetMaxRowCount(); QueryExecution queryExec = new QueryExecution(startIndex, maxResults, maxResults); ISearchService searchService = DctmServiceFactory.GetServiceInstance <ISearchService>(this.InfoUtente.dst); QueryResult queryResult = searchService.Execute(strQuery, queryExec, null); QueryStatus queryStatus = queryResult.QueryStatus; RepositoryStatusInfo repStatusInfo = queryResult.QueryStatus.RepositoryStatusInfos[0]; if (repStatusInfo.Status == Status.FAILURE) { throw new ApplicationException("QueryResult: Status.FAILURE"); } fullTextResult = new List <string>(); foreach (DataObject dataObject in queryResult.DataObjects) { // Reperimento docnumber string docNumber = dataObject.Properties.Get(TypeDocumento.DOC_NUMBER).GetValueAsString(); if (!fullTextResult.Contains(docNumber)) // Eliminazione dei risultati duplicati { fullTextResult.Add(docNumber); } } context.SearchResultList = fullTextResult.ToArray(); context.TotalPageNumber = (fullTextResult.Count / PAGE_SIZE); context.TotalRecordCount = fullTextResult.Count; } // Paginazione dei risultati if (fullTextResult != null && fullTextResult.Count > 0) { int startIndex = (context.RequestedPageNumber * PAGE_SIZE) - PAGE_SIZE; int count = PAGE_SIZE; if (fullTextResult.Count < count) { count = fullTextResult.Count; } List <string> pageContent = fullTextResult.GetRange(startIndex, count); result = this.GetDocuments(pageContent.ToArray(), InfoUtente); } } catch (Exception ex) { result.Clear(); logger.Debug(string.Format("Errore in Documentum.FullTextSearch:\n{0}", ex.ToString())); } return(result); }
/// <summary> /// /// </summary> /// <param name="context"></param> /// <returns></returns> public ArrayList FullTextSearch(ref FullTextSearchContext context) { return(this.InstanceCDC.FullTextSearch(ref context)); }
public static InfoDocumento[] getQueryInfoDocumentoPaging(InfoUtente infoutente, DocsPaWR.FiltroRicerca[][] query, int numPage, out int numTotPage, out int nRec, bool comingPopUp, bool grigi, bool security, bool getIdProfilesList, out SearchResultInfo[] idProfilesList) { // La lista dei system id dei documenti restituiti dalla ricerca SearchResultInfo[] idProfiles = null; InfoDocumento[] DocS = null; nRec = 0; numTotPage = 0; try { string textToSearch = string.Empty; if (!IsRicercaFullText(query, out textToSearch)) { DocS = docsPaWS.DocumentoGetQueryDocumentoPaging(infoutente.idGruppo, infoutente.idPeople, query, comingPopUp, grigi, numPage, security, getIdProfilesList, out numTotPage, out nRec, out idProfiles); } else { // reperimento oggetto infoutente // Reperimento dalla sessione del contesto di ricerca fulltext FullTextSearchContext context = GetFullTextSearchContextinSession; if (context == null) { // Prima ricerca fulltext context = new FullTextSearchContext(); } else if (!textToSearch.Equals(context.TextToSearch)) { // Se il testo inserito per la ricerca è differente // da quello presente in sessione viene creato // un nuovo oggetto di contesto per la ricerca context = new FullTextSearchContext(); } // Impostazione indice pagina richiesta context.RequestedPageNumber = numPage; // Impostazione testo da ricercare context.TextToSearch = textToSearch; // Ricerca fulltext DocS = FullTextSearch(infoutente, ref context); // Reperimento numero pagine e record totali numTotPage = context.TotalPageNumber; nRec = context.TotalRecordCount; // Impostazione in sessione del contesto di ricerca fulltext GetFullTextSearchContextinSession = context; } } catch (System.Exception ex) { UIManager.AdministrationManager.DiagnosticError(ex); } // Impostazione della lista dei sisyem id dei documento idProfilesList = idProfiles; return(DocS); }
/// <summary> /// /// </summary> /// <param name="context"></param> /// <returns></returns> public ArrayList FullTextSearch(ref FullTextSearchContext context) { return(null); }
/// <summary> /// Ricerca fulltext nell'oggetto document /// /// nb: da fare anche ricerca allegati /// </summary> /// <param name="context"></param> /// <returns></returns> public ArrayList FullTextSearch(ref FullTextSearchContext context) { ArrayList result = new ArrayList(); try { List <string> fullTextResult = null; if (context.SearchResultList != null && context.SearchResultList.Length > 0) { // Ricerca già effettuata, reperimento dall'oggetto di contesto // dei risultati precedenti evitando così una dispendiosa // chiamata al sistema documentale fullTextResult = new List <string>(context.SearchResultList); } else { //esegue la ricerca su OCS CorteContentServices.FilterSearchRequestType searchDocumentRequest = new CorteContentServices.FilterSearchRequestType(); //costruisco la stringa di ricerca //inserire i filtri di ricerca //1. il path da cui cercare //2. l'ordinamento //3. solo i documenti del protocollo //4. ... searchDocumentRequest.userCredentials = OCSServices.OCSUtils.getUserCredentials(_infoUtente); searchDocumentRequest.filter = new CorteContentServices.FilterSearchType(); searchDocumentRequest.filter.folderPath = OCSConfigurations.GetDocRootFolder(); searchDocumentRequest.filter.includeSubFolders = true; searchDocumentRequest.filter.includeSubFoldersSpecified = true; searchDocumentRequest.filter.sortClause = "CREATE_DATE DESC"; // Query execution int startIndex = (context.RequestedPageNumber * PAGE_SIZE) - PAGE_SIZE; int maxResults = this.GetMaxRowCount(); searchDocumentRequest.filter.count = maxResults; searchDocumentRequest.filter.countSpecified = true; //l'indice in OCS parte da 1 e non da 0 searchDocumentRequest.filter.offset = startIndex + 1; searchDocumentRequest.filter.offsetSpecified = true; searchDocumentRequest.filter.searchExpress = new DocsPaDocumentale_OCS.CorteContentServices.searchExpress(); //TODO: da fare!!! searchDocumentRequest.filter.searchExpress.SearchExprType = new DocsPaDocumentale_OCS.CorteContentServices.SearchExprType(); string operatCr1 = "CONTAINS"; string rightOpCr1 = context.TextToSearch; searchDocumentRequest.filter.searchExpress.SearchExprType.@operator = operatCr1; searchDocumentRequest.filter.searchExpress.SearchExprType.rightOperand = rightOpCr1; //SABRINA: provo ad eliminare la catgoria in modo da ottenere tutti i documenti (anche allegati e stampe registro) bool profilezioneDinamica = DocsPaDB.Query_DocsPAWS.Documenti.isEnabledProfilazioneAllegati; if (!profilezioneDinamica) { searchDocumentRequest.filter.searchExpress.SearchExprType.sameLevelOperator = "AND"; searchDocumentRequest.filter.searchExpress.SearchExprType.SearchExprType1 = new DocsPaDocumentale_OCS.CorteContentServices.SearchExprType(); string operatCr2 = "HAS_CATEGORY"; string rightOpCr2 = "[" + DocsPaObjectType.ObjectTypes.CATEGOTY_PROTOCOLLO + "]"; searchDocumentRequest.filter.searchExpress.SearchExprType.SearchExprType1.@operator = operatCr2; searchDocumentRequest.filter.searchExpress.SearchExprType.SearchExprType1.rightOperand = rightOpCr2; } CorteContentServices.ItemSearchListResponseType listResult; listResult = this.WsDocumentInstance.SearchDocuments(searchDocumentRequest); OCSUtils.throwExceptionIfInvalidResult(listResult.result); fullTextResult = new List <string>(); foreach (CorteContentServices.ItemSearchType item in listResult.items) { // Reperimento docnumber //NB: momentaneamente ricavo il docNumber dall'oggetto info string docNumber = item.info.name.Substring(0, item.info.name.IndexOf(".")); if (!fullTextResult.Contains(docNumber)) // Eliminazione dei risultati duplicati { fullTextResult.Add(docNumber); } } } // Paginazione dei risultati if (fullTextResult != null && fullTextResult.Count > 0) { int startIndex = (context.RequestedPageNumber * PAGE_SIZE) - PAGE_SIZE; int count = PAGE_SIZE; if ((fullTextResult.Count - startIndex) < count) { count = (fullTextResult.Count - startIndex); } result = this.GetDocuments(fullTextResult.GetRange(startIndex, count).ToArray(), InfoUtente); int pageCount = (fullTextResult.Count / PAGE_SIZE); if ((fullTextResult.Count % PAGE_SIZE) > 0) { pageCount++; } context.SearchResultList = fullTextResult.ToArray(); context.TotalPageNumber = pageCount; context.TotalRecordCount = fullTextResult.Count; } } catch (Exception ex) { result.Clear(); } return(result); }