vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 2.x Full Releases (https://vborg.vbsupport.ru/forumdisplay.php?f=4)
-   -   vB3 Similar Threads (https://vborg.vbsupport.ru/showthread.php?t=42388)

Velocd 08-16-2002 10:00 PM

vB3 Similar Threads
 
vB3 Similar Threads for 2.2.x
Clone version | by Velocd

This hack, as well all my other vB2 hacks, I no longer provide support for (being I run vB3 and it's too much hassel to debug vB2). When vB3 Release Candidate comes out, by request I might convert some of my hacks.

Install time: 6 minutes
File edits: 1 (showthread.php)
Template edits: 1 (showthread)
New templates: 2 (showthread_similarthreads, showthread_similarthreadbits)




What is it?
Basically this hack will check for other similar thread titles within the forum of the thread you are viewing, then it will display the most similar threads, based on a similar-priority setting you choose, at the bottom of that thread.

Why did I make it?
This hack instantly drew my attention when I first saw it at the Jupiter vB3 forums. I figured it couldn't be that bad to make, and why wait when it's such a simple feature to integrate as a standalone hack? So, I opened up my TextPad and started coding. ;)

Personally, I HIGHLY doubt the method and coding I used in my hack is at all similar to the one at Jupiter vB3, but it seems to work just as fine. Even on my small forum the results on some threads look good, while for a large forum such as vB.org the results would look 3x as better.

Features:
  • Displays everything that the vB3 similar threads does.
  • Also gives a description of the thread, only if you have the thread-description hack installed. (source: here)

Bugs?
Depending on the priority level you pick, some threads that you are "dead sure" to have a similar result might not show. You might have to toggle the priority level at first, to get it set just right. Other than this, it's fairly clean.
See a demo at this thread, scroll to bottom:
http://beta.vbulletin.com/vb3/showth...p?threadid=990

Screenshots? Demo's?
See the next post for a screenshot. Want a demo? Visit the similar thread feature at the Jupiter vB3 forums :p


------------- Installation -------------

#1. In showthread.php, find:
PHP Code:

if ($noshutdownfunc) {
  
$DB_site->query("UPDATE thread SET views=views+1 WHERE threadid='$threadid'");
} else {
  
$shutdownqueries[]="UPDATE LOW_PRIORITY thread SET views=views+1 WHERE threadid='$threadid'";
}

if (
$bbuserinfo[cookieuser]) {
  
vbsetcookie("bbthreadview[$threadid]",time(),0);


Above it place:
PHP Code:

//////////////////////////////////////////////////
// vBulletin3 Similar Threads "clone" by Velocd //
//////////////////////////////////////////////////

//////////////////////////// CONFIGURE ////////////////////////////////
$description_option 0//1 = on, 0 = off. (use only if you have THREAD descriptions installed)
if($description_option){ $desc ",description"; }
$limit 4//Set the limit to the maximum amount of results to display
$priority 60//KEY: [less accurate, more results <0 --- 25 ---- 50 ---- 75 --- 100> more accurate, less results]
$previewcharacters 150//Amount of characters shown in the preview
///////////////////////////////////////////////////////////////////////

$rthreads=$DB_site->query("SELECT threadid,title,postusername,replycount,lastpost,postuserid,dateline$desc
            FROM thread
            WHERE forumid='
$thread[forumid]'
            ORDER BY dateline"
);

$validtitle trim(strtolower($thread[title])," \t.");
$count 0;

while (
$rthread $DB_site->fetch_array($rthreads)) {
    
$validthread trim(strtolower($rthread[title])," \t.");

    
similar_text($validtitle$validthread, &$similarity);

    if(
$similarity $priority){
        
$similar[title] = $rthread[title];
        
$similar[threadid] = $rthread[threadid];
        
$similar[postusername] = $rthread[postusername];
        
$similar[postuserid] = $rthread[postuserid];
        
$similar[replycount] = $rthread[replycount];
        
$similar[date] = vbdate($dateformat,$rthread[lastpost]);
        
$similar[description] = $rthread[description];


        if (
strlen($similar[description]) > 150) {
            
$similar[description] = substr($similar[description], 0$previewcharacters) . "..."; } else {
            
$similar[description] = $similar[description];
        }

        if(
$similar[threadid] != $thread[threadid] && $count $limit){
        
$count++;
        eval(
"\$similarthreadbits .= \"".gettemplate("showthread_similarthreadbits")."\";"); } 
    }
}

if(
$count != 0){
eval(
"\$similarthreads .= \"".gettemplate("showthread_similarthreads")."\";"); }

////////////////////////////
// End Similar Threads /////
//////////////////////////// 

Now look at this block of code from above:
PHP Code:

//////////////////////////// CONFIGURE ////////////////////////////////
$description_option 0//1 = on, 0 = off. (use only if you have THREAD descriptions installed)
if($description_option){ $desc ",description"; }
$limit 4//Set the limit to the maximum amount of results to display
$priority 60//KEY: [less accurate, more results <0 --- 25 ---- 50 ---- 75 --- 100> more accurate, less results]
$previewcharacters 150//Amount of characters shown in the preview
/////////////////////////////////////////////////////////////////////// 

As detailed, those variables change how this hack works. The main thing you need to notice is $priority, which at default is set at 60, which I've found on my forums to be good. As said in the KEY in comments, a higher priority will get you more accurate similar threads, but less results. Ofcourse, a high priority is ideal for a large forum. Lower priority vice versa.


#2. Create a new template called
showthread_similarthreads
, and place inside:
Code:

<table cellpadding="{_tableouterborderwidth}" cellspacing="0" border="0" bgcolor="{_tablebordercolor}" {_tableouterextra} width="{_contenttablewidth}" align="center">
<tr><td>
<table cellpadding="4" cellspacing="{_tableinnerborderwidth}" border="0" {_tableinnerextra} width="100%">
<tr>
        <td bgcolor="{_tableheadbgcolor}" width="{_tablewidth}" colspan="4" align="center">
<normalfont color="{_tableheadtextcolor}">
<b>Similar Threads</b></normalfont></td>
</tr>
<tr align="center" bgcolor="{_categorybackcolor}" background="https://vborg.vbsupport.ru/images/catagory_backing.gif">
        <td align="center" nowrap><span><smallfont><b>Thread</b></smallfont></span></td>
        <td nowrap><span><b><smallfont>Thread Starter</smallfont></b></span></td>
        <td nowrap><span><smallfont><b>Replies</b></smallfont></span></td>
        <td nowrap><span><smallfont><b>Last Post</b></smallfont></span></td>
</tr>
$similarthreadbits
</table>
</td></tr></table>
<br>

In the code above, take out all the underscores (ie. _) out of the replacement variables, such as {_tablewidth}, or else they will not work.

#3. Create a new template called showthread_similarthreadbits, and place inside:
Code:

<tr align="center">       
<td width="60%" align="left" bgcolor="{_firstaltcolor}"><normalfont>
<a href="showthread.php?s=$session[sessionhash]&forumid=$thread[forumid]&threadid=$similar[threadid]"
title="$similar[description]">$similar[title]
</a></normalfont></td>
        <td width="20%" bgcolor="{_secondaltcolor}" nowrap="nowrap"><normalfont>
<a href="member.php?s=$session[sessionhash]&action=getinfo&userid=$similar[postuserid]">$similar[postusername]
</a></normalfont></td>
        <td bgcolor="{_firstaltcolor}"><normalfont>$similar[replycount]</normalfont></td>
        <td bgcolor="{_secondaltcolor}" width="20%"><normalfont>$similar[date]</normalfont>
</td>
</tr>

In the code above, take out all the underscores (ie. _) out of the replacement variables, such as {_secondaltcolor}, or else the colors wont show.

#4. In the template showthread, find:
Code:

<!-- thread options links -->
<table cellpadding="0" cellspacing="0" border="0" bgcolor="#0A293E"  align="center"><tr><td>

On the line above it place:
Code:

$similarthreads

------------- End -------------

That's it! Pretty easy and quick to install, which is the nicest part about it. :)

If you use this hack remember, please click install! Without it, you might have had to wait till vB3 ;)

DrkFusion 08-16-2002 11:01 PM

;) nice work man.

Drk

Velocd 08-16-2002 11:05 PM

Here is that screenshot mentioned (attached)

Hope you all enjoy :cool:

DrkFusion 08-16-2002 11:26 PM

This is amazing, works like a charm :)
Too bad I can't show off my board :'(
If anyone can access
http://localhost, feel free to check out my board ;)
Drk

Velocd 08-16-2002 11:31 PM

Nobody can access your local host :D
But anyways, glad you enjoy ^_^

DrkFusion 08-16-2002 11:58 PM

How does this work?
Does it do a search on the words used in the subject line?

pattox2k1 08-17-2002 12:07 AM

Quote:

#4. In showthread.php, find:

code:
<!-- thread options links -->
<table cellpadding="0" cellspacing="0" border="0" bgcolor="#0A293E" align="center"><tr><td>




On the line above it place:

code:
$similarthreads
that aint in the showthread.php file......do you mean the template? cause i put it in the template and it dosent show anything......

Velocd 08-17-2002 12:11 AM

Quote:

How does this work?
Does it do a search on the words used in the subject line?

No, it uses a function called similar_text, which calculates the similarity between two strings.

PHP Code:

similar_text($validtitle$validthread, &$similarity); 

Once it finds the similarity, I compare it to the user-defined priority level of similarity between threads.

I tried using another similar function called levenshtein, which is suppose to have better performance (in speed I guess), but it didn't exactly work, or not as well as similar_text does.

At first I did think about putting it through a search, and grabbing the top four or so results, but this is much easier, and only requires one query. ;)

Quote:

that aint in the showthread.php file......do you mean the template? cause i put it in the template and it dosent show anything......
:rolleyes: why, yes! that is what I mean :p
*goes to fix*

ULTIMATESSJ 08-17-2002 12:16 AM

heh i seenthis hack commign, when i seen the vB3 beta, nice work Velocd, you are definately getting a lot better at this stuff

[D]Vincent 08-17-2002 01:32 AM

Nice hack, I probably won't install it though lol

joeboo 08-17-2002 01:51 AM

very nice velocd, i will install this one :)

lordofgun 08-17-2002 03:40 AM

I'm getting the following error:

Warning: Wrong parameter count for trim() in /usr/local/psa/home/vhosts/billsfanzone.com/httpdocs/showthread.php on line 274

Velocd 08-17-2002 03:46 AM

hmm, that is an odd error.

Try replacing:
PHP Code:

$validtitle trim(strtolower($thread[title])," \t.");
$count 0;

while (
$rthread $DB_site->fetch_array($rthreads)) {
    
$validthread trim(strtolower($rthread[title])," \t."); 

With:
PHP Code:

$validtitle trim($thread[title]," \t.");
$validtitle strtolower($validtitle);
$count 0;

while (
$rthread $DB_site->fetch_array($rthreads)) {
    
$validthread trim($rthread[title]," \t.");
    
$validthread strtolower($validthread); 

My guess is you are using possibly an older version of PHP maybe, and it's not functional with more than one parameter..(something like that)..:P

MrLister 08-17-2002 04:40 AM

Great job!!

xware 08-17-2002 05:59 AM

Good hack.
But a problem is this hack use a whole thread table sql ....slowly.
I have 10000+ threads in thread table.
Before installed this hack ,my showthread page generated in 0.06433198 seconds ,after installed it this same Page generated in 1.26433198 seconds .
Would there be a better way to do this?

Boofo 08-17-2002 07:01 AM

Velocd, you have finally outdone yourself with this hack. Excellent work! I just have a couple of questions...how many queries does this add to the page? Will it add 4 or whatever you have set as the limit? And is 4 a good limit? And lastly, what does previewcharacters actually do? Thanks for the great hack!

/me clicks install!

Floris 08-17-2002 09:25 AM

Please put the code etc in a .txt file, so unlicenced members can't view it?

Tim Wheatley 08-17-2002 10:05 AM

I'm concerned this would slow things a lot on my forums, can anyone provide more info on whether it's slowed their forums?

Neo 08-17-2002 11:31 AM

It will.

Tim Wheatley 08-17-2002 12:03 PM

Thanks Neo. :)

Kars10 08-17-2002 02:22 PM

Thanx VeloCD!!
This Feature rules. install was very easy on 2.2.5, and works like a charm
/me klicks installed!!

xug 08-17-2002 02:32 PM

I have this hack installed and have seen it workings only once, I did refresh my browser and looked at another thread and this new hacks doesn't show up anymore.

Very strange.

Please does somebody knows what happen or what I did wrong?

kenny@ecn 08-17-2002 03:06 PM

Alright, I screwed up big time somewhere along the lines when I installed this... When I try to view a thread now- its shows this:

<see next post>

Yeah, I don't know what to do... Where did I go wrong? How can I fix this? Can someone help me!?!?

Thanks...

-Kenny

kenny@ecn 08-17-2002 03:09 PM

hmmmm... Now I get:


Quote:

Parse error: parse error in /home/virtual/site57/fst/var/www/html/showthread.php on line 96

kenny@ecn 08-17-2002 03:09 PM

Here is my showthread.php BTW:

<Do not post entire files. -Mike>

kenny@ecn 08-17-2002 03:47 PM

Now I get :

Quote:

Fatal error: Call to a member function on a non-object in /home/virtual/site57/fst/var/www/html/showthread.php on line 91

Gamingforce 08-17-2002 03:52 PM

Good to see you releasing more hacks Velocd ;). I won't release this mainly because of the performance hit it generates on our board of a bit more than 850k posts. Great job! I never knew there even was a similar_text(); function LOL. :)

Velocd 08-17-2002 05:21 PM

Quote:

Originally posted by xware
Good hack.
But a problem is this hack use a whole thread table sql ....slowly.
I have 10000+ threads in thread table.
Before installed this hack ,my showthread page generated in 0.06433198 seconds ,after installed it this same Page generated in 1.26433198 seconds .
Would there be a better way to do this?

Quote:

Originally posted by Gamingforce
Good to see you releasing more hacks Velocd ;). I won't release this mainly because of the performance hit it generates on our board of a bit more than 850k posts. Great job! I never knew there even was a similar_text(); function LOL. :)
Yea, I know the only problem is the performance issue for larger forums. Since this hack does check all threads within that particular forum. I'm going to look into the hack, to possible see if there is a fix for this. I wonder what vB3 does :rolleyes:

Quote:

Originally posted by xiphoid
Please put the code etc in a .txt file, so unlicenced members can't view it?
Unlicensed members can't even view the "full releases" forum anyway, so it shouldn't matter too much. I usually only put things in text files if the hack is very long.

Quote:

Originally posted by xug
I have this hack installed and have seen it workings only once, I did refresh my browser and looked at another thread and this new hacks doesn't show up anymore.

Very strange.

Please does somebody knows what happen or what I did wrong?

Depending if you have a small forum or not will determine how many results you get from similar threads. Ofcourse if you set the priority level to very low, like 20, more results will show, although they might not be all that related to the thread.

I'm not too sure what you mean by refreshing and the hack disappearing...maybe you accidentally set the priority level to very high.


Quote:

Originally posted by kenny@ecn
hmmmm... Now I get:
Quote:

Fatal error: Call to a member function on a non-object in /home/virtual/site57/fst/var/www/html/showthread.php on line 91

Uninstall the hack, and reinstall it again carefully. I'm not sure what your error is because I'm sure our files are different. If you are getting a parse error, you may have not copied my code exactly, or may have modified it and dropped something out.

;)

kenny@ecn 08-17-2002 05:46 PM

Quote:


Uninstall the hack, and reinstall it again carefully. I'm not sure what your error is because I'm sure our files are different. If you are getting a parse error, you may have not copied my code exactly, or may have modified it and dropped something out.

;)


I did do this, and I still have no idea... help me!!! Any ideas?

kenny@ecn 08-17-2002 06:25 PM

Alright, found a backup showthread.php... Starting ALL over again :) (Will keep you updated about whether it works or not...)

kenny@ecn 08-17-2002 06:32 PM

I tried to install it but it didnt work!!!!


Quote:

Parse error: parse error in /home/virtual/site57/fst/var/www/html/showthread.php on line 277
Would you like to try?

DemiNeo0101 08-17-2002 07:22 PM

Quote:

Originally posted by DrkFusion
This is amazing, works like a charm :)
Too bad I can't show off my board :'(
If anyone can access
http://localhost, feel free to check out my board ;)
Drk

hey a kiddie porn website.... I mean errr NM ^^

MalaK_3araby 08-17-2002 09:50 PM

Velocd

Good Job Indeed
Installs easy ... Works with 2.2.5 .. Works with foriegn language.

Thanks.

* installs *

nuno 08-17-2002 09:56 PM

Quote:

Originally posted by kenny@ecn
Here is my showthread.php BTW:
yadda yadda

It's against the license agreement to post full vB .php files :eek:

Freddie Bingham 08-17-2002 10:56 PM

vb3 stores a list of similar threads along with each thread. This list is generated when the post is made/edited. Scanning the entire thread table on every view of showthread and then running checks on every thread is not the best way to go about this. The list is built from scanning the word table, NOT the thread table. Remember the word table is indexed so we can search for words efficiently. vB3 also only uses the title of the thread to determine something's value as being similar.

The function that searches for posts from search.php is reused for generating this search.

Enough information?

Velocd 08-18-2002 03:05 AM

I knew vB3 would have a much improved method, naturally :p

And yes, that was more than enough info ;)
Unless you want to give me instructions on how to do all that you just said...just kidding! ^_^'

proxyMX 08-18-2002 04:39 AM

if you have a rollerball mouse, go to the first page of this post and bounce back and forward, its fun :) ps i got too many errors with this, uninstalled it

Attrox 08-18-2002 02:50 PM

Very cool, though I think I will just wait for vB3 to be released...

CJi 08-18-2002 03:49 PM

I got parse errors T_VARIABLE dodas. Uninstalled it before I could get an exact copy of the text, sorry. Nice idea. :(

Velocd 08-18-2002 06:18 PM

This hack shouldn't generate too many errors, being as small and simple that it is. Those of you who are recieving them can only be installing the hack incorrectly. (installed correctly, you should get no parse errors/T_Variable warnings) Ofcourse the hack has performance issues for the larger forums (I have a smaller forum, and my pages still generate at .3 seconds).

Anyway, I'm going to see what I can do to fix it.. :p


All times are GMT. The time now is 04:48 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01504 seconds
  • Memory Usage 1,888KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (4)bbcode_code_printable
  • (6)bbcode_php_printable
  • (15)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (2)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (40)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete