Category Archives: Misc

Why regular expressions are not supported on index searches

People generally love the speed of index searches, but there are a few power users who wish they could also run regular expression (regex) searches against the index. The power of regex with the speed of the index, what’s not to like? From the support desk this week:

“I’d like to use a regular expression in an index-based search to find lines that simultaneously contain the keywords 230 and 2015, with the requirement that 230 must be surrounded by whitespace characters on both sides, and 2015 must be preceded by a whitespace character.”

The trouble is that indexes aren’t designed to handle regular expression searches. To understand why, let’s think about how an index works.

How does an index work?

Just like the index at the back of a book, the index for search data is basically a sorted list of terms taken from the source data. Anything that doesn’t look like a term, eg, a lone % sign, is stripped from the text. There are some additional data, such as term frequency, and term positions, but the terms aren’t stored in sentence order.

For example, the line of text:

file_locator work-efficiency calculation:(normal-speed*50%)=lots

Results in the following term database:

50
calculation
efficiency
file_locator
lots
normal
speed
work

An index search can quickly scan the term database for the individual search terms and link them back to the original document.

However, a regex, which is typically implemented as a directed graph of nodes and arcs representing transitions based on the input stream, requires the whole stream of text to work. It won’t work on a database of terms. Now, you could run a regex over the individual terms in the database (which we may implement in the future), but a regex spanning multiple terms is not possible.

Looking back at the original question, the end-user’s request doesn’t necessarily need to be a regex to work. You can use angle brackets to define the word boundaries and the NEAR operator for proximity. So, this search term would probably suffice:

<230> NEAR <2015>

Note: Notice how certain characters are stripped from the text, such as *, %, and -. That has the unfortunate side effect of preventing searches for those characters. The program will, however,  compensate, so a search for ‘work-efficiency’ still works, but it will also match ‘work efficiency’ or even ‘work#efficiency’.

I REALLY want to use a regex

Not all is lost. Most of the effort spent searching through PDFs and Word docs is spent converting the file formats into text. The actual string search is very fast. That conversion effort can be avoided with the Caching functionality, which stores extracted text in a local database for super quick retrieval in future searches.

So, if you need to run regex searches on a group of documents consider switching on Caching for lightning-fast searches, it’s not as quick as Index search but it’s pretty damn fast.

Agent Ransack featured in Disney+ series

They say that imitation is the the sincerest form of flattery so imagine my surprise watching Dopesick (S1, E5) on Disney+ when the hard working DEA agent is introduced to a tool that looks like Agent Ransack:

“… what’s taken you months will now be accomplished in just a few seconds.”

I say ‘looks like’ because they’ve moved a few things around. Here’s the Dopesick screen shot (approx. 12:09s):

And here’s a screenshot of Agent Ransack circa 2003 (1.7.3):

They’ve removed the ‘File name’ fields and moved the date and size fields but the rest is identical.

Disney probably should’ve asked Mythicsoft for permission to use an altered version of Agent Ransack in their show but I’m satisfied with the compliment.

Software Piracy

I was looking at a recent error report and surprised to see included in the error report a screen shot of a software pirate at work. The miscreant appears to have been trying to figure out why a crash was occurring with the license checks removed:

It’s not the first time I’ve seen such screenshots but it’s a useful reminder of how hard people work on tasks that, consciously or not, undermine the  structure of the company and the ability to support and improve the very products they, the pirates, want to use.

Continue reading →

Agent Ransack 2016

I’m really pleased to announce that Agent Ransack 2016 is now available.

Agent Ransack Download Page

It’s always a tricky balance deciding what new features to add to Agent Ransack and which to keep for the Pro (ie FileLocator Pro) user. Which new features will make Agent Ransack a nicer all-round product for the average ‘lite’ user without overloading on the extra features and control that the ‘pro’ user needs. I think Agent Ransack 2016 has found this balance, I hope you do too. So, what’s new? Continue reading →

FileLocator Pro Version 8

It’s been a while coming but… FileLocator Pro 8.0 is now available for immediate download!

FileLocator Pro Download Page

Indexing

In a FileLocator Pro QA “Does FileLocator Pro create an index for searching?” I once answered:

“No FileLocator Pro does not use file or content indexes and for very good reasons. While indexing can certainly improve the speed of searches in certain circumstances there are many drawbacks. These drawbacks include …”

and I go on to list resource issues, syncing issues, security issues and more. So it might seem surprising that I’m now announcing that FileLocator Pro v.8 supports indexing. Yes, I know, I’m still a little surprised myself.

IndexUI

However, and this is a really important point, it’s not the type of indexing component that’s always running in the background. If you don’t use the feature then you won’t notice it because it’s effectively disabled by default. It won’t be running in the background consuming valuable CPU cycles and it won’t be building secret indexes consuming valuable disk space. It won’t do anything until you ask it to.

That’s because it’s not intended as a Desktop Search replacement instead it’s more for searching large repositories of fairly static data. Continue reading →

Merry Christmas!

IMG_5424
How is it already the end of 2015? Boy, times flies by when you’re having fun.

Looking back over this last year my Mythicsoft highlight of 2015 was the decoding of the 2013 OST format. After, literally, years of trying to coax Microsoft into providing us with the information we gave up and just did it ourselves. I won’t deny I’m still slightly annoyed we had to spend the extra time on what turned out to be such small differences but it was a very satisfying end result.

So what’s going to be the highlight of 2016 I wonder? Well, it’s easy… FileLocator Pro version 8! It’s been a long time in the making, the first prototyping of one of the new features goes back to 2011. To be honest, I had really hoped FileLocator Pro v8 would have been released in 2015 but the good news is that it’s very close. And because of the delay we’ll be extending the one year upgrade period so that anyone who purchased v7 in 2015 will be eligible for a free upgrade to v8.

One small admin note: Technical Support over the Christmas period will be available but the responses might be slightly slower than what you may have normally received.

Which just leaves me, and everyone at Mythicsoft, to wish you a very Merry Christmas and a wonderful New Year!

 

What is Desktop Search?

An enthusiastic customer recently sent us an email:

Hi guys, please include the keywords “desktop search” on your home page so people may actually find your product when searching for a desktop search program. (All your competitors are named things like Google|Yahoo|Windows Desktop Search.)

Hope this little tip will help you and your users!

It’s really nice to receive comments like this, people WANT us to be found, but I’ve never really thought about FileLocator Pro or Agent Ransack as Desktop Search products. So, what is Desktop Search? A quick search of the Internet highlights a large number of different uses:

Desktop Search vs Mobile Search: Distinguishing between Internet searches that are performed by someone sitting at a traditional Desktop computer as opposed to someone searching the Internet using a mobile device such as a smart phone.

Desktop Search vs Internet Search: Distinguishing between someone searching files on a local computer as opposed to someone searching the Internet.

Other: And then you get some examples that really confuse the terminology. Bing Desktop is a Microsoft desktop app that allows people to quickly search the Internet, via their desktop. Google Desktop Search is (was) a desktop app written by Google for searching files on their local computer.

So, what do I think Desktop Search is? Well, let’s break it down… Continue reading →

OST 2013 File Format – The missing documentation

With the release of Outlook 2013 the format of the OST file changed significantly enough to break FileLocator Pro’s OST reading code and for some reason Microsoft refused to divulge the changes (I’ve personally spoken to or emailed several different Microsoft employees on this issue, at least half with ‘Senior’ in their job title, and while they all initially seemed responsive they ultimately said it would not be possible to share the information). So eventually we decided to roll-up our sleeves and dig down into the binary content and figure it out for ourselves. Here’s what we found… Continue reading →

Agent Ransack’s early years

If I’m honest Agent Ransack was an accident. After reading an article by Brian Kernighan (co-father of C and Unix) in 1999 on regular expressions I decided to play around with my own regex engine. However, to really test it out I needed a framework to throw lots of data at it so I created a basic C++ application (initially called FileLocator) that would run through all the source files on my computer and match it against the regex engine. And it worked!

Feeling really pleased with myself I had a look on the Internet for other regex engines and realized that there were some MUCH better implementations. I found one by a guy named Henry Spencer and plugged that into my search framework. It not only worked, it was REALLY fast.
Continue reading →