I'm making good progress implementing the site Search feature using DotLucene (not to be confused with Lucene.NET), big thanks to Martijn Boland for good advice and also for good code examples on using DotLucene in his Cuyahoga Web Site Framework. His project is also a good reference for those who want to use NHibernate in ASP.NET.
The search is functional and working on this site, though it still needs some refinement before I make a release. The index for the search is maintened as content is created and updated so it will always stay in synch. Search results are filtered by role and the index is updated if view permissions for a page are updated so that the filtering is always correct.
Search is implemented in:
Html Content
Blogs
Forums
Event Calendar
Image Gallery
Links
Shared Files
The biggest challenge is getting good performance in building the index for an existing site which will be needed for users upgrading from older versions of mojoPortal. I've created a button to build the index for the whole site but the quandry I face is after the upgrade people should really never click it. Especially if the site gets really big say hundreds of pages or thousands of forum posts it would really be best to leave the indexes to manage themselves. But if the button is there, people will click it.
One option I suppose is to put the button in the page settings and make the user manually index each page in the site rather than the whole site. This would break it down to smaller chunks at a time but still would not be a good thing to do on the page that has the forums after you get a thousand posts as each post will be indexed. I don't know of anyone currently using mojoPortal that has hundreds of pages or thousands of posts so maybe I shouldn't worry about it too much. Building the index will definitely be an Admin only feature.