Introducing Haystack
So I've been trying to get this completed enough to launch a project for about a week now. The release of the Notes 8 public beta slowed me down for a while, but my alpha version is ready, and I want to get it in the hands of some folks and see if I can recruit some help.
Haystack is a search tool for Notes developers. It's a full-text searching solution that allows aggregation from multiple NSFs and even multiple servers. It's PURE Lotuscript. It uses a simple frameset and two script libraries right now. As the configurability of the tool grows, though, it will end up having a much larger toolkit.
It's Lotuscript class-based, and I'm not really an OO expert, so if you're a stickler for blackboxed classes, you probably won't be happy. I like public properties. :) It uses my multiple NSF caching strategy, so there might be something useful in the source code for you even if you don't need searching.
It WILL integrate OpenLog, when I get the chance to sit down with Julian's brand-spanking-new 1.6 release.
What is DOES is: perform FT searches on one or more target NSFs (which must be FT indexed) and build local stub documents in haystack.nsf. These stub documents contain necessary details about the original document, and I'll be putting together some controls to allow the developer to build simple maps to specify what content should be included in the stub document.
The most important thing is does, however, is allow the developer to access a collection of what the user selected in the search results view. This is tricky, because we're actually talking about documents that might be aggregated from several NSFs. It actually presents a LIST of NotesDocumentCollections, where the ListTag is the server!!path to the NSF where the original documents are contained. The subsequent document collection is of the ORIGINAL documents, not the stub documents that were actually selected (although you can get that very easily, too!)
I have a lot left to do here, and hopefully I'll be able to get some help. I really want to have a flexible view-generation engine for putting different views into haystack.nsf, so the developer can easily configure presentation of search results.
And most of all, I have a lot of developer documentation to write. Feel free to contribute snippets in comments here or in the project discussion!
Many thanks to Colin Macdonald, who inspired the overall model of how this works, and Rocky Oliver, who helped me flesh out a few details over IM. I expect contributions from you both, y'know!


Comments
Also, let me know what help you're looking for; I'd be happy to help if I can.
Posted by Tim Tripcony At 11:24:20 AM On 03/20/2007 |
Posted by John Head At 03:09:34 PM On 03/20/2007 |
Posted by Charles Robinson At 05:00:27 PM On 03/20/2007 |
Also I see you are creating stub docs. How about allowing some transformations of the original docs with the results written to the stub docs to then display summarized data?
Posted by Slawek Rogulski At 10:00:54 PM On 03/20/2007 |
Basically, you'll have complete @function language on the wire. Why? Because you'll be able to put a formula in the mapping document and I'll simply do an Evaluate() on what you put in. Even if it's simply a field name, we'll just evaluate it, 'cause the result on the LS side is the same.
But that means you'll get any transform available in the LS Evaluate function, which is pretty much anything not involving user interaction or an @Command.
Posted by Nathan T. Freeman At 10:39:09 PM On 03/20/2007 |
The following might be a bit tricky or "outside of the box" but let me throw it out there.
Another scenario would be when I have appointments, historical and planned spanning a year. What I would like to do is to show the whole year with an indication if there was or is going to be any appointment in a given month. What I see is a view that has 13 columns. First column shows the person's name and the remaining 12 columns correspond to the months of year. So for all the personal appointments for a given year there is one summary doc needed with a flag (yes/no) for each month. All I am trying to show is an indication of any activity in a particular month or its absence. I guess this could be one type of display for calendrical data as opposed to text and number lists.
Posted by Slawek Rogulski At 12:28:57 AM On 03/21/2007 |
That being said, if you download the code and you think you can achieve a sufficiently configurable version of what you just described, I LOVE to fold it back into the original coding effort!
Posted by Nathan T. Freeman At 03:41:56 AM On 03/21/2007 |
Posted by Slawek Rogulski At 06:50:53 AM On 03/21/2007 |
Posted by Chris Blatnick At 06:22:04 PM On 03/22/2007 |
Posted by Tony Austin At 11:26:00 PM On 03/30/2007 |
Posted by Mohammed Umar S At 07:57:16 AM On 04/13/2007 |