I had wondered since 1997 if it would be possible to create a search engine that could “find” things based on their location and how broadly or specifically I wanted to search. With that, FindItByMe Technologies was born.
This project consumed two years and 8,000 working hours of my life, during which I taught myself enough GIS, linguistics and graph theory to construct an ontologically based search technology.
Since the search engine’s primary focus was local search, I and a volunteer physically photographed 12,000 storefronts in the following communities in Southern California:
- Big Bear Lake
This allowed me to get exact coordinates (and match it to the street address) for each location, thereby avoiding interpolated coordinates based on starting and ending addresses along street segments.
In order to geolocate these photographs on various map types ranging from vector to raster, I spent more than a year downloading high resolution imagery from USGS, NOAA, the State of California and other GIS databases. This had to be done at night, since US Government servers would retard traffic to non-government clients during daylight hours.
The next task for the search engine was simplify the ability to search. Early on I imagined that serving more than one language was desirable, so while I was designing the linguistic components (digraph structures describe traversals up and down an ontological tree), I expanded it with language codes and language equivalents to the base lexemes (smallest distinct lexical units that have meaning) so that searching in any language, even mixing words from different languages coded in their native alphabets would be interpreted properly and results returned in the default language of the user’s browser.
You might wonder what the purpose of the ontology was in the first place. An ontology allows you to organize information from a broad base to specific terms. Therefore, it allows you to broaden or narrow your search as you like. A broad search serves a person browsing for general interest, while drilling further into the ontological structure returns more specific results.
Use of the ontology for user data triggered an interest to expand the capability to code ALL lexical units used anywhere in the system into their alternate language equivalents. That enabled me to easily switch the screen, menus and any other text not involved in user data to be displayed in any language and alphabet.
Finally, I had developed a XAML based design grid, so that users/account holders could code their listings however they wanted to (in the screen real estate allotted to them). All results, including web layout and user data was being returned to the front end in XAML format (although JSON would be the logical choice today).