What is corzoogle?
corzoogle is a fast, real-time, self-contained, one-page php search engine that can find text anywhere inside a folder, or tree of folders by simply dropping it in, and loading it in a web browser; something like..
corzoogle provides deep, secure, realtime
full-text searching of files, be they on your own computer, or your web site. File changes are immediately
available in the search results. Unlike most other search systems corzoogle doesn't "index" content on a daily/weekly/manual basis, but always searches in realtime, live
. Your results are never out of date.
corzoogle is free for non-profit use.
What's special about corzoogle?
Lots of things. Firstly, as I mentioned, corzoogle is live; working in realtime
. There's no index, which means no indexing, crawling or spidering, and definitely no database. Everything happens NOW, the instant the user demands it.
corzoogle is also very fast. Expect to get results back in under a second, even when searching through thousands
of documents. You can try it out here
at corz.org; click the search bar at the top of all the pages, and go find something!
One thing (or rather, lots and lots and lots of things) that makes corzoogle stand out is its configurability; here's some of the things you have control over, with corzoogle..
* drop corzoogle in your favourite text editor and see for yourself!
- List to come (it's so BIG!*)
What do I need to run corzoogle?
A web server running php.
Most modern operating systems have a functioning web server built-in. Apache (the most popular, and arguably the best web server in the world) is ideal, and installed as standard on Mac OS X, almost all Linux/bsd/UNIX/ systems, and most serious professional internet web servers. If you pay for web hosting, this is probably what you have. Apache is also available for Windows. You'll need php4 or greater to run corzoogle.
And I can run this at home, yeah?
corzoogle was originally designed to search some documentation; the php manual in fact, which is almost four thousand files in one folder, and a bugger to navigate, too. I seemed to be spending as much time finding information as using it. corzoogle fixed that.
Then I threw a copy into my "dev archive"; years of collected developer information, all suddenly so very available
. Since then it's been cloned and borrowed and now there's almost nowhere on my network that isn't covered by corzoogle.
If you ever find yourself searching for text in documents, or archives of documents, research, anything like that, or if you run a web site without a decent search facility you are probably losing many visitors, and corzoogle could potentially be of great value to you; so feel free to check it out, for free.
Got no web server?
If you haven't yet realized the power of your own personal web server, or don't have Apache installed on your system, keep an eye on this part
of the site; a growing collection of tools and how-to's, articles related to that very subject!
Version Information (aka. 'itstory')
This should be fairly up-to-date (it's dynamically included from the beta source folder), and will keep you informed if you are messing with the latest beta..
Welcome to corzoogle!
itstory.. aka 'version history'.. aka 'changes'..
last updated: MONDAY Oct 29, 2007
v0.9.5b [current live testing beta]
* improved URL encoding in results.
* fixed entity encoding in result snippets, even really bad HTML
pages should produce validating snippets. You still need to go
fix your dodgy pages, though!
* improvements to the mailer functions, should be more robust under
various server setups
* fixed stray </span> tag I introduced in the last version.
* minor stylistic improvements
* improved mail notification
* fixes in distributed version (removed certain corz.org localizations)
* fixed potential php notices for missing files (optional bot agents
file so the mailer knows who *not* to notify you about).
you can now configure the location of the hits file. if you cannot create
a writable file in corzoogle's directory, perhaps you can use the system
temp directory, or something like that.
You can now add a notice to corzoogle, which will display under the main
search form. you can use it to tell your users anything.
improved the recent hits stylings, with its own css class, and fully-
configurable character widths, you can put it anywhere on the page, and do
anything with it. I also improved its arithmetic, and it should now remain
within whatever limit you have set, e.g. 80 characters.
tip: use half the character value as an em value for the css class'
width, so for 80 characters, we might use..
corzoogle will now perform intelligent transformation of any hits from
your corzblog installation. It can also create "flat links", if you use
and prefer that.
corzoogle now outputs 100% Strict XHTML compliant web code, in nice <div>s
with css controlling all the positional and style elements. Have fun!
fixed occasional issue with snippets being *much* longer
than they should have been. This version hasn't been officially released as it
is in a state of flux, though runs happily here at corz.org and can be had by
a simple email.
started integrating the general site xhtml upgrade.
v0.8rc3 [current release]
a few minor surface changes. everything is nice and stable.
fixed the bug with the search between tags. I really don't
know how that > got deleted! but it was a while ago! certain documents with
plain old <body> tags were being ignored in the search results. this only
applied to case-sensitive search-between tags, the default setting.
results snippets will now always begin at proper word boundries.
corzoogle will now automatically select the query terms in the input box, so
you can begin another search immediately, if you need to, by simply typing. a
small but significant improvement.
fixed the form focus error some browsers gave by basically just removing the
second form altogether, it just caused problmes anyhow.
v0.7.5b6 - v0.8rc1
minor changes, too busy to document!
altered slightly the way corzoogle strips undesirable
characters from the input query. instead of replacing them with a space, they
are simply removed. a search for need w[[ords would search for need+words,
previously we would have got results for need+ords, the "w" having been
removed as a single letter.
added "extension mangling"..
Let's say you have a php site, and you keep your content in files ending .htm,
but if they are accessed directly, you redirect (with htaccess) to the php
container page. now you can have corzoogle alter the extension for you, so the
link goes directly to the php file. a hit for "darkstat.htm" would link
directly to "darkstat.php"
another use for mangling is .comment files. rather than the raw comment file,
you want the user to load the page it is attached to. so a hit for
"darkstat.php.comment" will present a link directly to
"darkstat.php. the "real" filename, as always, is available by
hovering the mouse over the title.
this feature will be disabled by default, to enable, simply uncomment (remove
the "//" from in front of) the line beginning..
//$mangle = array(...
put the ".. " back in the end of snippet pieces in multiple query searches, no
more weird words in the snippets.
added a preference for the length of the "latest hits" links. the default is
enough hits to fill 81 chracters, but you can change that now.
removed some limitations of the search_between feature. will be more accurate
when using mixed start and end tags. if your end tag doesn't exist, but the
start tag did, corzoogle scans right to the end of the document. you could
even enter a bogus tag to have corzoogle always do that.
added a preference for "embedding", for folks that want to
run corzoogle from inside another page. corzoogle will return the results in
the same space.
added some notes about the $search_between preference, and how it relates to
added multiple corzblog searching. previously we were limited to a single blog
installation. you no longer need to specify this, corzoogle will return
correct results for any number of blog installations automatically. I spotted
this limitation after I started my devblog. if you use a name other than "arc"
for your corzblog archives, this functionality will break, though you could
edit in whatever name you do use. (why would anyone want to change that?)
fixed a bug I introduced in 0.7.5b1, where certain queries,
matching words right at the end of the text could produce unexpected results,
usually putting the entire page into the preview.
fixed a minor bug where certain documents could potentially be scored twice
for their filename.
added facility to set initial scoring weight in a multiple-query term.
added switch to force corzoogle to only search documents containing your
chosen $search_between tags, particularly for folks that use custom
added "notify" facility for searches. you can be emailed
every time someone searches your site! you might want to put a filter on that!
this facility is disabled by default, and completely untested; please report
back any interesting findings.
$search_between tags can now be case-insensitive, if you need that.
small performance improvements when searching for queries
with -not words
"search between" tags can be case-sensitive (default) or case-insensitive, the
latter is marginally slower, but potentially useful.
added (ugly) highlights to "exact" word matches. they are
disabled by default (they were sort of in there already, some one wanted them
working) This looks like someone drew a marker pen through all the exact hits
added a switch for searching inside html tags. I'll set this to false, which
produces neater reults. if you are using coroogle to "grep" your site for
editing, or searching web-development technical documentation, or such-like,
you'll likely want to set this to true.
preview snippets can now be presented with the query terms in context, in
other words, the query term appears some way into the text, and not right at
the start of the snippet. aids comprehension. of course, how far in the term
appears, is configurable in the prefs.
corzoogle now attempts to create the "recent hits" file if it's not there,
which it did originally (dunno how that got switched off). There's still a
message if this wasn't possible (likely).
fixed a wee bug where html tags were being passed to the "past-hits" and users
could create interesting html structures at the foot of results pages.
added a few "googies" to the distribution; customised Apache manual index page
with built-in corzoogle search, is one.
added < and > to the removed characters. You won't get
unexpected html structures in the results now. Searching for "<select name",
for instance, would create a nice select option. Amazingly, corzoogle still
returned all the results just fine!
fixed a missing "" double-quote on the inline image's
url tag. oops. must have been in a hurry packaging this one.
added a preference for this now. you can specify an image location, or use
'embedded'. the choice is yours. that's right; if you hadn't noticed, the
image is contained within the script itself. (scroll down) this is highly
cool, yes, but please do read the notes about that inside corzoogle,
especially if you are running corzoogle on a 'live' website.
a few other minor gui thingies.
fixed trailing slashes problem on search terms. this also
fixes the stop-words weirdness. "that's", will be removed now, as expected.
fixed a bug where if you had set corzoogle to score for all titles (not the
default), it was grabbing the document titles twice. oops. fixed a few other
if a document has no title, and the filename has become the title in its
place, we now remove the extension before scoring. if you have
score_all_titles set to true, a search for php will *not* now return every php
file in the zone! this applies to regular file searches, and also the display
titles of the results. you still get the file extension if you hover the mouse
a couple of speed optimisations. Aye, just when I thought I had every
Fixed the search limit so that it will definitely stop at whatever you set,
regardless of the number of hits from one folder.
removed a potential bug where certain incredibly long single-term gibberish
words could cause an error. you should see the gramotki with all my test
phrases on it! I think the one that revealed the potential error was
except without the spaces ;o)
discovered the error_reporting (E_ALL) php setting, and so cleaned up a
heap of undefined variables and suchlikes. (and here was me just luvvin this
not having to declare variables "feature") these are only "warning" level
errors which most of us would never see, but still, ya know, they were there.
I think I got them all, but search conditions are a factor. I'll scan through
again, but if you come across any yourself, do let me know. some are almost
unnavoidable, and many just create checking code *sigh*, anyway, error
reporting should always be off on production servers.
you can now alter the hot-link message. I noticed a couple of weird (weird as
in unintelligible strange writing, their contant may have been perfectly
sedate) foreign sites using corzoogle and I thought maybe "hot-link my
butt-stink" would be less funny for them. it's in the domain section at the
foot of the prefs, right under where you can *allow* hot-linking (crazy
sooo many changes and improvements I'll write this up when I get a
chance, probably. just en-joy the features!
Added user switches for a couple of things, you can now switch snippets
on and off, description snippets on and off. You can have either, both, or
none, whatever you like.
Added more meta description CaSe checks.
added facility to NOT search for terms, as in boolean NOT, for
system secure -FineCrypto -pgp
would search for pages containing both "system" and "secure" but NOT return
pages any containing the words "FineCrypto" or "pgp"
it's case-insensitive, so you can do -finecrypto or -FINEcrypto, or whatever,
and it skips that file just the same.
while "keeping everything fast" is up there with "maintaining simplicity" and
"ease of use", you can add as many boolean NOT's as you like to the query
string, with a near-zero performance hit.
added ability to only search between certain tags..
the default is to search all content between the <html></html> tags but you
can configure this behavior, perhaps using the <body> </body> tags, or some
other tag of your choosing. you could even get right down and create
<search><endsearch> tags, it's your call.
duplicate search terms are now removed
added filename searching capability
If the user inputs a word with a dot '.' in it, we assume it to be a filename
and corzoogle will, as well as its usual query string search, perform an
additional file name check, presenting its findings at the end of the results
this consequently improved some internal logic, previously, dots '.' would
have been filtered from the input terms, but now we can find *references* to
real file names, linked pages, within documents, which seems a more sensible
only the first found file.name is actioned, further filenames are incorporated
into the search query as regular search terms.
added some user data checks
(NEVER trust user data), filtering out some undesirables, bizarre punctuation,
that sort of thing.
improved scoring for titles. we score seperately for exact matches and simple
enlarged many of the comments, which are a tad cryptic in places,
hopefully of use to some lernerschripter.
improved the readability of a few variables names, stuff I'd put together
quickly, as often happens on chaotic days.
set limit on possible score achievable by containing individual search terms,
and also score for the different cAsE possibilities, ie.. mac MAC Mac
added scoring for document <title>
before.. well, it just sorta started with a <form> and went from there.. I
have to admit, I didn't really start keeping proper notes until around version
reason was, I was was developing three seperate systems independently, and to
be quite honest it would have been too much work. by the time I finally
settled on this present system, it was aleady fairly mature. see my blog if
you need more details.
die (); // :debug: