Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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);
        }