Inspector IT "Universal Tag Cloud" for DNN

Blog 2
Location: BlogsAll BlogsReviews    
Posted by: mamlin 6/18/2009 3:12 AM

A missing "Web 2.0" element from DNN is the now-ubiquitous Tag Cloud. Que Inspector IT: their new Universal Tag Cloud module does most everything you'd expect neatly and easily.
 
 
Tag Cloud
If you've followed our bloggings you may recall that we've recently taken a look at creating our own tag cloud via the free REPORTS module.  This was both easy to do and, well, free.  It also left a lot to be desired for those more interested in using a tag cloud rather than understanding how to create one.
 
 
Inspector IT's Universal Tag Cloud Module
The Universal Tag Cloud (UTC) module is a good example of a module done right the first time around.  Despite being an initial release, the module installs easily, covers most of the features you'd expect and is a breeze to configure.  You can install multiple copies and set each copy to provide tags from any set of source modules on your site.  You pick which specific modules each UTC instance pulls tags from.  This means your tag clouds can be focused on same-page content, site-wide content or on subject-based content spread across your site.  By allowing you to pick from individual modules, UTC avoids the pitfall of page-based tag cloud solutions that end up reporting common webpage text as content tags (terms like "Login", "Logout", "Contact Us", etc).  By picking from individual modules, though, UTC limits itself to only including content from modules that have implemented iSearchable (this is pretty standard for such modules).
 
 
Cloud Display
Standard stuff, here.  Terms may be displayed alphabetically or by "weight" (from the most-commonly-appearing terms to the least).   You can reverse the sort order and even decide whether to present users controls to alter the sort method and sort order.  Higher-weighted terms appear in larger fonts and different colors.  Mousing over a term displays a tooltip showing the "weight" of that term (how many times the term appears in whatever modules have been included in the cloud).
 
What's missing in this first release is a way to apply your own CSS to the rendered tag cloud.  Perhaps your site uses a skin with a dark background color -- you'd want a way to specify only light, bright colors for fonts instead of the more standard dark font colors.  Perhaps your site uses an especially fine (small) font for content -- you might prefer a tag cloud with smaller fonts as well.  You get the idea.  User-specified CSS is an option I'd expect to see in a future version of the UTC module.
 

Sneaky SEO
UTC also allows you to sneak in your own terms even if those terms do not show up much on your site.  For instance, if I wanted to call extra attention to our Google AJAX Search series of blog postings, I could force UTC to count as terms "google, ajax, search, google search, google ajax search" and give each term a certain weight (a value representing the number of times a tag apepars on your site) against the other tags in the generated tag cloud.
 
 
Installation and Configuration
Installing and configuring UTC is quite easy but....I did uncover a couple of "gotchas".  Let's take a virtual walk through the setup process...
 
 
Step 1 -- Install the module and drop it on a test page
UTC installs just as you'd install any third-party module.  No funny stuff and nothing to fiddle with in web.config.  Nice.
 
Adding it to a test page will give you a slightly-unsettling message when you first view the module (screenshot A):
 
Did not find any indexed data.
Screenshot A:  Did not find any indexed data.
 
Ok, this is no problem -- we simply have not configured the module, yet.  Expect to always see this message when you initially add UTC to a page.  Go ahead and go into the module SETTINGS. Under the "Search Cloud Settings" area you'll find "Tag Cloud System Status Center" (screenshot B). This gives you a quick status of the DNN indexing system so you don't have to track down the appropriate ADMIN and/or HOST settings (more on this subject in Step 2).  What a concept!  We even get confirmation whether the indexed content currently includes common words and numbers (so we should not be surprised when they show up as cloud tags).
 
Tag Cloud System Status Center
Screenshot B: Tag Cloud System Status Center
 

Ok, so...what do we need to do to get some tags to show up in our cloud?  Aha!  Looking at the bottom of the settings we see "Tag Cloud Source Management" (screenshot C).  Expand this for a list of source content modules.  Pick one or more modules that you'd like your tags to be generated from.  Remember:  Each Universal Tag Cloud module instance can pick its own list of source content modules.
 
Tag Cloud Source Management
Screenshot C:  Tag Cloud Source Management
 
For my test of UTC I selected my BLOG module as the source content module.  Let's go ahead and also set the UTC module's VIEW permissions for "All Users" while we're here.  Now click "Update" to save our settings and.... (screenshot D)
 
Universal Tag Cloud (20 tags)
Screenshot D:  Universal Tag Cloud (20 tags shown)
 
Wasn't that easy?  We now have the top 20 tags (words) from my BLOG module displayed alphabetically and "weighted" with more common terms appearing in larger font sizes and different colors.  Clicking a tag will, by default, open the DNN search results page for that word.

This is going pretty well so far....what else can we do?  Well for starters I'd like to show a bigger list of tags.  I'd also like to exclude overly-common terms that showed up such as "1", "just" and "part".  Such terms make no sense by themselves so they aren't really useful in my tag cloud. Let's go back into the module settings...
 
 
Step 2 -- Refine the Cloud
By default UTC displays 20 tags.  I'd like to show more.  Under the module settings, I change the "Tag Limit" value from "20" to "40".  Done.
 
I also want to filter out some of those common terms that appeared in the tag cloud but were essentially meaningless.  The simplest way to do this is to use DNN's built-in "SEARCH ADMIN" page options (available through the HOST menu) to filter out common words and numbers from the DNN search index.   This is nice but it will affect all modules using the DNN search index which may have unintended consequences where other modules are concerned.  I just want to filter common terms from my tag cloud without affecting anything else.  Fortunately, we can use Universal Tag Cloud's "Tag Exclusion List" feature to easily exclude terms from our results.  Terms are entered as a comma-delimited list.  I enter "1,just,need,part,site" and click "Update" to see... (screenshot E)
 
Universal Tag Cloud (50 filtered tags)
Screenshot E:  Universal Tag Cloud (40 filtered tags)
 
Great!  Er...except now I see more common terms that I'd like to filter such as "2", "click" and "want".  It's obvious that I could end up spending a lot of time identifying and adding words to the filter so I decide to take a shortcut and simply grab someone else's precompiled list of common terms.  I quickly Google up just such a list (a small one with just over 300 terms) on this page.  It doesn't include numbers so I add some integers as well:  "0,1,2,3,4,5,6,7,8,9".  Actually, the list doesn't include a lot of common terms but it's a good starting point.  The list also isn't comma-delimited so I add the commas and drop the list into the UTC "Tag Exclusion List".  For all you copy-and-paste fanatics, here's the resulting list I used:

0,1,2,3,4,5,6,7,8,9,a,about,above,across,after,afterwards,again,against,all,almost,alone,along,already,also,although,always,am,among,amongst,amoungst,amount,an,and,another,any,anyhow,anyone,anything,anyway,anywhere,are,around,as,at,back,be,became,because,become,becomes,becoming,been,before,beforehand,behind,being,below,beside,besides,between,beyond,bill,both,bottom,but,by,call,can,cannot,cant,co,computer,con,could,couldnt,cry,de,describe,detail,do,done,down,due,during,each,eg,eight,either,eleven,else,elsewhere,empty,enough,etc,even,ever,every,everyone,everything,everywhere,except,few,fifteen,fify,fill,find,fire,first,five,for,former,formerly,forty,found,four,from,front,full,further,get,give,go,had,has,hasnt,have,he,hence,her,here,hereafter,hereby,herein,hereupon,hers,herself,him,himself,his,how,however,hundred,i,ie,if,in,inc,indeed,interest,into,is,it,its,itself,keep,last,latter,latterly,least,less,ltd,made,many,may,me,meanwhile,might,mill,mine,more,moreover,most,mostly,move,much,must,my,myself,name,namely,neither,never,nevertheless,next,nine,no,nobody,none,noone,nor,not,nothing,now,nowhere,of,off,often,on,once,one,only,onto,or,other,others,otherwise,our,ours,ourselves,out,over,own,part,per,perhaps,please,put,rather,re,same,see,seem,seemed,seeming,seems,serious,several,she,should,show,side,since,sincere,six,sixty,so,some,somehow,someone,something,sometime,sometimes,somewhere,still,such,system,take,ten,than,that,the,their,them,themselves,then,thence,there,thereafter,thereby,therefore,therein,thereupon,these,they,thick,thin,third,this,those,though,three,through,throughout,thru,thus,to,together,too,top,toward,towards,twelve,twenty,two,un,under,until,up,upon,us,very,via,was,we,well,were,what,whatever,when,whence,whenever,where,whereafter,whereas,whereby,wherein,whereupon,wherever,whether,which,while,whither,who,whoever,whole,whom,whose,why,will,with,within,without,would,yet,you,your,yours,yourself,yourselves

 
Now, we have to expect that filtering out terms takes time and that filtering out a lot of terms could take a lot of time.  The UTC module gives us a time-saving option by allowing us to use cached search terms (tags) instead of dynamically querying our data on each page load.  This makes good sense -- especially after adding so many filter terms -- so I select "Enable Cloud Cache" and click "Update" and.....uh-oh.... (screenshot F)
 
Error -- Currently Unavailable
Screenshot F:  UTC is Currently Unavailable

 Hhhrrrmmm...."The specified path, file name, or both are too long..."  Well, I just added over 300 terms to the filter list.  Perhaps it can't handle that many?  I go back in and cut the list down to just the numbers and terms from 'a' through 'f':

0,1,2,3,4,5,6,7,8,9,a,an,the,me,you,they,he,she,it,that,this,there,their,our,my,your,his,hers,before,now,next,first,last,final,finally


No good -- I still get the error.  I cut the list down even further and....it works!  Ok, so now I know there is a length limit but I don't know if the limit is the total number of characters in the list or the total number of items (terms) in the list.  I experiment and discover that it's the total number of characters.  Somewhere between 100 to 120 characters I start getting the error.  If i use a long enough term (a single term) I get a different error:  "String or binary data would be truncated..." (screenshot G)  Here's an example of a single-term test string that produces the problem:

abc12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345xyz

 
Universal Tag Cloud
Screenshot G:  UTC "Data would be truncated" error
 
But wait -- after more experimenting with filter terms everything suddenly starts to work....even that list of over 300 terms that originally produced the error.  What's going on?
 
I finally spot it:  somehow the "Enable Cloud Cache" setting has unchecked itself (screenshot H).  I re-enable this setting and....kaboom!  The error reappears.  After many more tests I'm satisfied that the filter list works perfectly as long as the "Cloud Cache" feature is not enabled.  Side note:  The "Enable Cloud Cache" box continued to check or uncheck itself seemingly at random in between settings updates.  It was the only setting to do so and I still haven't determined a pattern to the behavior.
  
UTC - Enable Cloud Cache
Screenshot H:  Enable Cloud Cache option
 
I'll report this one back to the developer and will expect to see a minor update release in the future that addresses the issue. 
EDIT:  The developer reports this is a known "bug" stemming from a certain limitation in ASP.Net.  Potential workarounds are under consideration.
 
This brings up a good point:  If I want to use a large filter list but (for now) can't use the module's "Cloud Cache" feature to speed things up, will my tag cloud take too long to load?   Let's test some more!
 
 
Step 3 -- Universal Tag Cloud Under Load
I'll skip the boring details on this one and give you the summary:  Enabling the cloud cache option cut my overall page load times in half on pages with a lot of dynamic content (including retrieval of off-site RSS content).  While this is nice, my overall load times without the cache option enabled were still within reason.  I also tested one scalability aspect of the module by upping my tag cloud to 500 tags while using my 300+ term filter list.  To my surprise, the page rendering time did not noticeably increase compared to a tag cloud of only 20 tags.  The 500-term tag cloud rendered every bit as well and as quickly as the original 20-term tag cloud.
 
 
Other Features
I mentioned before that mouse hovers over tags result in tooltips showing the "count" (or "weight") of that tag.  Also I mentioned that you have the option of exposing controls to allow users to change the sort criteria (alphabatized versus "by weight").  An option I did not mention is that the module natively provides its own RSS feed which you can also choose to expose.  See all these features pictured in screenshot I:
 
UTC tooltip plus sorting and RSS feed otpions.
Screenshot I:  Tooltip, sort, RSS feed and Custom Tags
 
The tooltip shows term "zyxw" was counted 123 times.  ZYXW???  What is that?!?  That's actually an example of adding your own tag to the mix.  I'd mentioned that you can "force" a tag to appear and give it a weight even if the term does not actually appear on your site.  The term "zyxw" is an example of a fake tag I added and gave the weight "123" to.  Use the "Custom Tag" option in the module's settings to add your own tags to the cloud.
 
Another UTC option is the ability to change the destination URL used for tag links.  By default the tags link to DNN search with the tag as the search term.  You can instead provide your own URL as the destination -- the module even nicely provides you with a working example URL for routing tag links to Google search instead of DNN search.
 
 
Summary
To be brief:  very good module.  I'm impressed that this is a first release (actually v1.2, but still dangerously close to the intiial release).  I like it enough that I've decided to use the module on the Eguana Solutions site at the bottom of each blog page.  This is despite the fact that I've blogged about a means of easily creating your own free tag cloud (though only a very simple and very boring cloud).  If you'd like more info on the most current version of the module you can check out the Universal Tag Cloud page on SnowCovered here.
 
I like UTC quite a bit but, as with all things, there's room for improvement.  Here's my initial wish list:

  • Fix the "cloud cache" bug so longer filter lists my be used in conjunction with the caching option.
    EDIT:  Within hours of posting this blog I've been told that the "bug" was already known and stems from a certain limitation within ASP.Net.  Potential workarounds are already under consideration.
     
  • Allow users to specify their own external CSS file.
     
  • Add internal "common terms" filter option (with predefined list of terms).  Even better: have a scheduled event to compare indexed data against common terms library to regularly update filter to include only matched terms.  This would allow use of larger filter libraries with less performance penalty.
     
  • Allow users to customize header of RSS feed data (title, author, etc).

 
That's it -- based on this release, I'm quite looking forward to future Inspector IT products.  Comments?

Permalink |  Trackback

Comments (1)   Add Comment
Re: Inspector IT "Universal Tag Cloud" for DNN
Antonio Chagoury    6/19/2009 9:17 AM
Mamlin, Thank you for this wonderful and professional review. We are definitely working on the issues you uncovered and will be posting an update shortly.


Your name:
Title:
Comment:
Security Code
Enter the code shown above in the box below
Add Comment   Cancel 
You are here:  
 
>> Back to the top of the blog list...

 
        account   blog   click   cloud   code   create   data   events   example   feature   file   files   free   function   good   google   just   line   links   list   module   modules   need   note   number   option   page   pages   query   results   role   roles   script   search   select   settings   simple   site   skin   solution   step   tags   terms   time   user   users   value   version   want  
Minimize Google AJAX Search
 
Search ES:  
This is an example of a Google AJAX Search with asynchronous search execution for two searches.  See our blog series, 'Add Google AJAX Search to your DNN skin' for info and sample code.
 
     
Minimize Buy Stuff
 
Stuff by Eguana Solutions
(Be sorta cool!)
 
     
Minimize Most-Commented Blogs
 
 
     

Minimize Looking for more info?
 

There are tons of helpful
posts from Eguana Solutions 
on the DotNetNuke.com forums.
  
 
Click HERE to see our posts.

 
     
Minimize Modules for Sale
 

Looking for Eguana's modules? 
We're still working on them!
  

Until ours are ready to dazzle and
amaze, you'll have to make do with
the thousands of modules already
available on SnowCovered.

 
     
Minimize Favorite Modules
 

There are many great DNN modules.
A few we highly recommend are:
 
Dynamic Registration
Total control over the user signup process.  Create custom forms, execute your own SQL, use the integrated payment processing features to assign user roles, validate USERNAMEs via AJAX and much more.  Very cool.
 
URL Master
Change to friendly URLs that really ARE friendly.  Add keywords into your page URLs for better SEO.  Create 301 redirects for individual pages.  Force visitors (and search bots) to a single domain (i.e., make everyone use the "www" version of your site's URL or vice versa).  One of the single best upgrades for any DNN site.
 
Document Exchange 5 (DMX5)
Drag-and-drop from Windows Explorer directly into the DMX file manager!  File versioning, file and folder moderation, extend user permissions down to the file level (for user groups and even for individual users).  Infinite file and file info presentation options via custom display templates.  Store files locally or remotely via UNC (i.e., can securely store files somewhere besides your web server).  Much more.
 
XMOD by DNNDev
Rock-solid form module for data collection.  From simple feedback / email forms to complex, multi-part tabbed forms.  XMOD is different from other form modules because XMOD does not create a new database table for every new form definition -- an important feature if you plan to create dozens or hundreds of forms over the life of your DNN instance!  Excellent support from the developer and an active community around this module.
 
If you desire your form module to create a new DB table for each new form definition, a great alternative to XMOD is the Dynamic Forms module from DataSprings.  Dynamic Forms offers direct DB access beyond that found in XMOD as well as an easy drag-and-drop form builder option to help you get up and running very quickly.

 
     

Login