motore ricerca - time out

  • Creatore Discussione Creatore Discussione di.pro
  • Data di inizio Data di inizio

di.pro

Nuovo Utente
10 Set 2006
3
0
0
Salve a tutti,
ho un problema con il motore di ricerca interno che effettuata la ricerca tra diversi campi del db.

Il problema è questo:
il db contiene prevalentemente documenti il cui "peso" è notevole;
su circa 7.000 record ho circa 280.000 mega;

i campi del db hanno contenuti molto diversi tra loro quanto al numero di dati presenti;

se la ricerca viene effettuata su un campo "povero" di dati (per esempio sul titolo del documento), tutto OK;

se la ricerca viene effettuata su un campo più "pesante" (per esempio nel corpo del documento), il motore si blocca ed appare il seguente messaggio di timed out:

-------------------------
Active Server Pages error 'ASP 0113'

Script timed out

/motore/select_keywords.asp

The maximum amount of time for a script to execute was exceeded. You can change this limit by specifying a new value for the property Server.ScriptTimeout or by changing the value in the IIS administration tools.
-------------------------

C'è qualche soluzione?
Devo cambiare il motore interno?

Sarebbe possibile istallare in un sito in asp un motore più efficiente in un altro linguaggio?



Ringrazio anticipatamente quanti vorranno suggerire qualche soluzione.
 
Ciao! ;)

Di default, una pagina ASP è predisposta per durare in esecuzione al massimo 90 secondi, poi, dà l'errore che ti compare, cioè va in timeout.

Per modificare questo valore, posizionati nelle prime righe del codice della tua pagina e aggiungi:
<%
Server.ScriptTimeout = 180
%>
180 è il numero di secondi di durata massima dell'esecuzione della pagina (3 minuti).
Puoi variare questo valore a tuo piacere

Per quanto riguarda il resto: beh, se i dati sono così tanti e di grandi dimensioni, non puoi pretendere molto in termini di velocità di esecuzione

Piuttosto, invece di far effettuare la ricerca tra il contenuto dei documenti, io, nel DB, ad ogni singolo titolo di documento associerei semplicemente delle parole chiave. In questa maniera, la ricerca avverrà in pochissimi attimi :)

:byebye:
 
Mi permetto di aggiungere a quanto dice Diego che effettivamente uno script che va in timeout ha qualche problema: va benissimo la forzatura, ma è bene tentare di sfilzare il processo di esecuzione dello script, anche perchè ammazzi la CPU del server ed un giorno o l'altro ti trovi il tuo Hoster fuori casa tua con un fucile a canne mozze in mano :)
 
Grazie per la duplice risposta ma... cosa fare?

Ho provato ad aumentare il timeout e la cosa serve a ben poco, a meno di non portare il timeout a 500-600; d'altra parte non vorrei essere impallinato (sono allergico al piombo ed al sangue, specie se mio...)

Ora, visto che non sono un tecnico, esiste una soluzione? Qualche motore più efficiente..., un linquaggio diverso... altro...?

Comunque 1000 grazie!!!
 
Eh eh, effettivamente gli Hoster incazzati sono una brutta razza, soprattutto se armati! :D

Come ti dicevo ieri, secondo me devi cambiare il metodo di ricerca. A quanto ho capito la tua ricerca avviene all'interno dei testi dei vari documenti: questo procedimento implica inevitabilmente una pesantezza di esecuzione del programma, che oltre a mandare in bomba la pagina dopo tempi di elaborazione troppo lunghi, scazza l'utente e gli fa cambiar sito :)

Sempre come ti dicevo ieri, nel DB io assocerei ad ogni titolo di documento un campo di nome CHIAVI_DOCUMENTO, dove inserirai una ventina di parole chiave riferite a quel documento specifico. Capirai bene che effettuando la ricerca solamente sui campi CHIAVI_DOCUMENTO per ogni record, i tempi si ridurranno in maniera più che evidente, e non correrai il rischio di trovarti Hoster inferociti sotto casa! ;)

:byebye:
 
Beh 280.000 mega mi sembrano troppi, quindi saranno molti molti di meno.
A mio avviso, per scorrere 7.000 records non ci vogliono 3 minuti, quindi devi cercare di ottimizzare il motore di ricerca, bypassando per esempio le parole di 2 o 3 lettere e nello specifico le congiunzioni che sono frequenti sui testi e rallentano.
Sarebbe giusto e + logico, data la quantità di dati, passare su un database + serio.
MySql, MSDE.

:byebye:
 
Grazie a tutti per le risposte.

Ecco... veramente... tre minti sono pochini... ho impostato il timeout su 1.000... e ancora il problema non è del tutto risolto...

Creare delle parole chiave mi creerebbe qualche problema; l'idea di daviduccio di bypassare le parole con poche lettere mi piace e vorrei utilizzarla; sareste così cortesi da suggerirmi come impostare lo script?

Ancora 1000 grazie!!!
 

Discussioni simili