Prahalad Deshpande
Prahalad Deshpande

Reputation: 4767

Full text search for desktops

I am currently in the process of developing a full text search framework in .NET for desktops that is cross platform that could be used by developers in search applications.

Wanted to know the top 5 requirements any developer would want from such a framework.

Upvotes: 1

Views: 321

Answers (3)

Cody Gray
Cody Gray

Reputation: 244742

I haven't explored any of the existing frameworks for this nor so far written an application that would have a use for such an API. However, I find the proposal intriguing and can already think of at least one app that could make use of it.

Here are my top five requirements, off the top of my head:

  1. Consistency with standard library design guidelines in order to ensure that best practices are followed throughout the code base and that it is easy to understand/use by an experienced .NET developer. (See Microsoft's "Design Guidelines for Developing Class Libraries" on MSDN.)

  2. Open source, for so many reasons. Among them: to provide an educational resource, to prevent developers from having to concern themselves with license agreements when reusing the library in an application, to ensure continued support and development in an active community of users (without a single entity on which the future of the software depends), and to allow individual developers the right to modify sections of the source if needed for non-traditional usage cases.

  3. Focused extensibility. The library should be flexible to allow a multitude of use scenarios and an appropriate amount of customization, but not at the expense of sacrificing clean design and losing sight of its primary goal. "One library to rule them all" is not necessary the hallmark of a clean and useful API. Try to avoid unnecessary complexity. I realize this is a delicate balance, but it's one worth keeping in mind. Above all, I find that I naturally gravitate towards frameworks where I feel like the designer tried to put themselves in my shoes as the person who is ultimately going to be using it.

  4. Speed. If the searching is slow or inefficient, I'll look elsewhere. Other solutions do exist.

  5. Robustness. It needs to be able to handle anything an application might throw at it, which generally translates into solidly-implemented error handling. It had better not crash my entire application, or I'm going to quickly decide that users don't really need a full-text search ability. Extensive testing is also a must here (and open source can definitely help with that)—never assume and never say never. A little paranoia can even be healthy. Check your arguments in each method before doing anything so that you never throw a NullReferenceException. You might not be able to write perfect code, but you want to try.

Overall, it's important to remember that designing a quality, reusable framework library is difficult. Don't let anyone tell you anything different. It's not the same thing as taking an algorithm you wrote, no matter how sweet, and calling it a library. There are enough barriers and dashed dreams when it comes to code reuse within a single development group or project. Implementing a library that can fit into many different programs without disrupting the original program's operation while still performing its task well is a lofty goal indeed, but, I believe, certainly a worthwhile undertaking nevertheless.

Upvotes: 0

DennyRolling
DennyRolling

Reputation: 486

  1. Fast (I mean fast) results. Under 0.5 second for the project of 10^7 lines of code
  2. CamelCasing and Under_Scored notation understanding
  3. Language constructs. "class FooBar" and "FooBar foo" are two very different beasts
  4. Find references there and back again, like when you have a function call you can find the prototype and otherwise.
  5. No downtime when something changes. When I change my code I need to see results immediately.

Upvotes: 0

swatkat
swatkat

Reputation: 5015

There are some framework/libraries available for implementing Desktop search. Check out these pages:
http://www.codeproject.com/kb/aspnet/DotLuceneSearch.aspx
http://www.codeproject.com/KB/office/desktopsearch1.aspx
http://msdn.microsoft.com/en-us/library/ff628790.aspx

Upvotes: 1

Related Questions