numero di risultati nella ricerca post per utente

Problemi riscontrati nell'uso del forum, suggerimenti e critiche per migliorare il servizio.
Avatar utente
kimj
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1058
Iscrizione: sabato 13 settembre 2008, 11:45

numero di risultati nella ricerca post per utente

Messaggio da kimj »

Dal profilo degli utenti, provo a elencare i messaggi in ordine cronologico, cliccando "Cerca i messaggi dell'utente". Essendo la ricerca limitata a 250 messaggi* vengono troncati i post più vecchi, con alcuni utenti molto attivi la ricerca trova risultati per pochi mesi. Sarebbe possibile togliere il limite per questo specifico uso della funzione di ricerca?

*anche usando la ricerca avanzata e richiedendo i primi 1000 messaggi il risultato è lo stesso.
We no longer think of chairs as technology; we just think of them as chairs. But there was a time when we hadn't worked out how many legs chairs should have, how tall they should be, and they would often 'crash' when we tried to use them.
Avatar utente
steff
Moderatore Globale
Moderatore Globale
Messaggi: 40299
Iscrizione: domenica 18 febbraio 2007, 19:48
Desktop: LXQt+labwc
Distribuzione: Arch; Debian; Ubuntu Server
Sesso: Maschile
Località: Toscana
Contatti:

Re: numero di risultati nella ricerca post per utente

Messaggio da steff »

Se ne parlato qui e qualche trucco c'è:
http://forum.ubuntu-it.org/viewtopic.ph ... &p=4183853
Hai fatto un backup oggi? Ieri?? Quando???
La Documentazione da consultare e la FAQ sul uso del forum
Sistemi: LXQt - semplice, modulare e configurabile + *ubuntu in Vbox
Avatar utente
kimj
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1058
Iscrizione: sabato 13 settembre 2008, 11:45

Re: numero di risultati nella ricerca post per utente

Messaggio da kimj »

Ho già provato con la ricerca avanzata, e qualsiasi limite si scelga il risultato è sempre limitato a 250 messaggi. IMHO la ricerca così è un po' inutile, è impossibile per esempio trovare il primo messaggio di un utente: si può cambiare l'ordine cronologico dei risultati, ma questa operazione sarà comunque effettuata dopo aver ricevuto dal db i primi 250 risultati. Credo sarebbe molto utile se si potesse implementare un'eccezione per questa specifica funzione. Credo sia inutile parlare di caching perché di sicuro ne fate largo uso. Si potrebbe però applicare la seguente soluzione alternativa: invece di usare la dispendiosa funzione di ricerca del forum, creare un piccolo script php che restituisce una singola pagina html con tutti i messaggi di un dato utente. Non conosco phpbb e sono passati 3 anni dall'ultima volta che ho messo mano ad sql, ma la query per estrarre i messaggi dovrebbe essere qualcosa di simile:

Codice: Seleziona tutto

SELECT post_subject, post_text FROM phpbb_posts_text WHERE post_id IN (SELECT post_id FROM phpbb_posts WHERE poster_id = $id)
Si potrebbe anche usare poster_name al posto di poster_id. Non dovrebbe rappresentare un problema, vista anche la scarsa frequenza con cui è usata la funzione. Poi bisognerebbe modificare phpbb perché il link "mostra i messaggi dell'utente" punti allo script. Siccome tengo a questa funzione, sono disponibile a dedicare il mio tempo alla sua realizzazione, ma le mie competenze sono assai ridotte (e quelle in mio possesso sono abbastanza arrugginite);
We no longer think of chairs as technology; we just think of them as chairs. But there was a time when we hadn't worked out how many legs chairs should have, how tall they should be, and they would often 'crash' when we tried to use them.
Avatar utente
kimj
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1058
Iscrizione: sabato 13 settembre 2008, 11:45

Re: numero di risultati nella ricerca post per utente

Messaggio da kimj »

per avere anche l'orario del post (grazie phpbb per le informazioni sparse su due tabelle), ho partorito questo sgorbio, non so se possa funzionare.

Codice: Seleziona tutto

SELECT phpbb_posts_text.post_id, phpbb_posts_text.post_subject, phpbb_posts_text.post_text, phpbb_posts.post_time FROM 'phpbb_posts_text' WHERE post_id IN 
(SELECT post_id FROM 'phpbb_posts' WHERE poster_id = $id)
INNER JOIN phpbb_posts ON phpbb_posts_text.post_id = phpbb_posts.post_id
ORDER BY phpbb_posts.post_time;
We no longer think of chairs as technology; we just think of them as chairs. But there was a time when we hadn't worked out how many legs chairs should have, how tall they should be, and they would often 'crash' when we tried to use them.
Avatar utente
kimj
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1058
Iscrizione: sabato 13 settembre 2008, 11:45

Re: numero di risultati nella ricerca post per utente

Messaggio da kimj »

La parte di phpbb da modificare dovrebbe essere il template. Esempio col tema di default:

Codice: Seleziona tutto

styles/prosilver/template/memberlist_body.html
riga 111:

Codice: Seleziona tutto

		<td class="posts"><!-- IF memberrow.POSTS and S_DISPLAY_SEARCH --><a href="{memberrow.U_SEARCH_USER}" title="{L_SEARCH_USER_POSTS}">{memberrow.POSTS}</a><!-- ELSE -->{memberrow.POSTS}<!-- ENDIF --></td>
bisognerebbe sostituire {memberrow.POSTS} con l'url allo script. Non saprei come accedere all'id dell'utente, non conosco phpbb ed ora non voglio indagare, ma si potrebbe anche in sua assenza farlo recuperare allo script dal referer.
Alternamente si può fare qualcosa tipo /url/script.php?name={S_USERNAME}
e fare un lookup dell'id relativo all'utente nello script, con

Codice: Seleziona tutto

SELECT user_id from phpbb_users where username = '$username'
Si potrebbe anche modificare le subquery per cercare per 'post_username' e non per 'poster_id', ma credo che così sia meglio, è meno dispendioso di risorse e restituisce i risultati anche per i nickname precedenti dello stesso utente.
Si potrebbe combinare in un'unica query:

Codice: Seleziona tutto

SELECT phpbb_posts_text.post_id, phpbb_posts_text.post_subject, phpbb_posts_text.post_text, phpbb_posts.post_time FROM 'phpbb_posts_text' WHERE post_id IN 
(SELECT post_id FROM 'phpbb_posts' WHERE poster_id =
(SELECT user_id FROM 'phpbb_users' WHERE username = '$username'))
INNER JOIN 'phpbb_posts' ON phpbb_posts_text.post_id = phpbb_posts.post_id
ORDER BY phpbb_posts.post_time DESC;
We no longer think of chairs as technology; we just think of them as chairs. But there was a time when we hadn't worked out how many legs chairs should have, how tall they should be, and they would often 'crash' when we tried to use them.
Avatar utente
Janvitus
Amministratore
Amministratore
Messaggi: 18775
Iscrizione: lunedì 25 aprile 2005, 15:52
Desktop: GNOME Shell / Xfce
Sesso: Maschile
Località: Potenza
Contatti:

Re: numero di risultati nella ricerca post per utente

Messaggio da Janvitus »

Ho già scritto altrove che la ricerca per ora non si tocca, il supporto a postgresql (per la ricerca) è sperimentale, sarà stabile per la 3.1 di phpbb, quindi pazienza...
+Fedora 39 • +Xubuntu 23.10
Avatar utente
kimj
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1058
Iscrizione: sabato 13 settembre 2008, 11:45

Re: numero di risultati nella ricerca post per utente

Messaggio da kimj »

Janvitus [url=http://forum.ubuntu-it.org/viewtopic.php?p=4382023#p4382023][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Ho già scritto altrove che la ricerca per ora non si tocca, il supporto a postgresql (per la ricerca) è sperimentale, sarà stabile per la 3.1 di phpbb, quindi pazienza...
infatti proponevo di bypassare totalmente la ricerca di phpbb e di lasciare elencare i messaggi di un utente ad uno script php, saranno 15-20 righe di codice, più la piccola modifica al template se si vuole che phpbb linki allo script
We no longer think of chairs as technology; we just think of them as chairs. But there was a time when we hadn't worked out how many legs chairs should have, how tall they should be, and they would often 'crash' when we tried to use them.
Scrivi risposta

Ritorna a “Gruppo Forum”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 16 ospiti