/// <summary> /// Avvio ricerca fulltext nel documentale hummingbird /// </summary> /// <param name="infoUtente"></param> /// <param name="context"></param> /// <returns></returns> private string[] SearchHummingbird(InfoUtente infoUtente, DocsPaVO.ricerche.FullTextSearchContext context) { string[] retValue = new string[0]; //Creiamo l'oggetto per la ricerca PCDCLIENTLib.PCDSearch objSearch = new PCDCLIENTLib.PCDSearchClass(); // Impostazione DST e libreria, indispensabili per la connessione ad Hummingbird objSearch.SetDST(infoUtente.dst); objSearch.AddSearchLib(this.GetLibreria(infoUtente.idAmministrazione)); // Aggiunta clausola from objSearch.SetSearchObject("DEF_PROF"); //Aggiungiamo la clausola where objSearch.AddSearchCriteria("FULLTEXT_CONTENT_PROFILE", context.TextToSearch); //Aggiungiamo la clausola where objSearch.AddReturnProperty("DOCNUM"); objSearch.AddReturnProperty("DOCNAME"); objSearch.AddReturnProperty("SYSTEM_ID"); objSearch.AddOrderByProperty("DOCNUM", 0); int maxRows = this.GetMaxRows(); if (maxRows > 0) { objSearch.SetMaxRows(maxRows); } //Eseguiamo la ricerca objSearch.Execute(); int numDocs = 0; if (objSearch.ErrNumber != 0) { } else { numDocs = objSearch.GetRowsFound(); if (numDocs != 0) { // Reperimento chiavi di ricerca retValue = this.GetSearchDocNumbers(objSearch); } } objSearch.ReleaseResults(); objSearch = null; return(retValue); }
/// <summary> /// Ricerca fulltext su Hummingbird /// </summary> /// <param name="testo">testo da ricercare, sia nell'oggetto, sia nel contenuto dei documenti</param> /// <param name="libreria">libreria sulla quale eseguire la ricerca</param> /// <param name="dst">dst per la connessione alla libreria specificata</param> /// <param name="infoUtente">oggetto di contesto utente</param> /// <returns>ArrayList contenente le informazioni dei documenti di interesse</returns> public ArrayList RicercaFT(string testo, string idReg, InfoUtente infoUtente, int numPage, out int numTotPage, out int nRec) { logger.Debug("RicercaFT"); numTotPage = 0; nRec = 0; //creiamo la stringa da usare per la ricerca delle info dei docs //che conterrà tutti i system_id recuperati dalla ricerca fulltext ArrayList resultSet = new ArrayList(); //controllo sulla stringa testo = testo.Replace("'", "''"); //Creiamo l'oggetto per la ricerca PCDCLIENTLib.PCDSearch objSearch = new PCDCLIENTLib.PCDSearchClass(); //impostiamo DST e libreria, indispensabili per la connessione ad Hummingbird objSearch.SetDST(infoUtente.dst); objSearch.AddSearchLib(this.GetLibreria(infoUtente.idAmministrazione)); // ESTRARRE LA LIBRERIA //Aggiungiamo la clausola from objSearch.SetSearchObject("DEF_PROF"); //Aggiungiamo la clausola where objSearch.AddSearchCriteria("FULLTEXT_CONTENT_PROFILE", testo); //Aggiungiamo la clausola where objSearch.AddReturnProperty("DOCNUM"); objSearch.AddReturnProperty("DOCNAME"); objSearch.AddReturnProperty("SYSTEM_ID"); objSearch.AddOrderByProperty("DOCNUM", 1); objSearch.SetMaxRows(100); //Eseguiamo la ricerca objSearch.Execute(); int numDocs = 0; //Controlliamo eventuali errori if (objSearch.ErrNumber != 0) { //errore } else { numDocs = objSearch.GetRowsFound(); if (numDocs != 0) { // Reperimento chiavi di ricerca string[] docNumbers = this.GetSearchDocNumbers(objSearch); if (docNumbers.Length > 0) { // Estrazione dei soli id relativi alla pagina richiesta docNumbers = this.ExtractPageDocNumbers(docNumbers, numPage); } // Reperimento dettagli sui documenti resultSet = this.GetListaDocumenti(docNumbers, infoUtente); } } objSearch.ReleaseResults(); objSearch = null; numTotPage = (numDocs / PAGE_SIZE); if (numTotPage * PAGE_SIZE < numDocs) { numTotPage++; } nRec = numDocs; return(resultSet); }