ReactOS Search

From ReactOS Wiki
Revision as of 19:21, 21 March 2006 by Frik85 (talk | contribs)
Jump to: navigation, search

About

The goal of the ReactOS Search is to provide a tiny, fast and reliable search tool with a simple to use user interface on the one hand and for experts extended search queries, metadata and content database for faster search results, simple system wide api on the other hand.

Applications

  • Search Tool
    • The W32/Ros32 GUI application which show the search results.
    • simple and consitent graphical user interface
    • extended search queries through (by default hidden) UI objects/settings.
    • optional command-line mode
  • DatabaseFeeder
    • Responsible for the metadata and content database.


Code from other projects

SQLite3

SQLite is a small C library that implements a self-contained, embeddable, zero-configuration SQL database engine. Features include:

  • Transactions are atomic, consistent, isolated, and durable (ACID) even after system crashes and power failures.
  • Implements most of SQL92. (Features not supported)
  • A complete database is stored in a single disk file.
  • Database files can be freely shared between machines with different byte orders.
  • Supports databases up to 2 tibibytes (2^41 bytes) in size.
  • Sizes of strings and BLOBs limited only by available memory.
  • Small code footprint: less than 250KiB fully configured or less than 150KiB with optional features omitted.
  • Faster than popular client/server database engines for most common operations.
  • Simple, easy to use API.
  • Well-commented source code with over 95% test coverage.
  • Self-contained: no external dependencies.
  • Sources are in the public domain. Use for any purpose.
  • more information: http://www.sqlite.org


Data Integrity:

SQLite provides transaction data integrity. If a program or OS crash or a power failure interrupts a database change, the change is either automatically completed or rolled back after the next reboot. The database is not corrupted by an incomplete write operation. SQLite is written in C but supports bindings to dozens of different programming languages.

Competitors

There are already a lot search tools around us, although most of them lack in some areas.

Note: some of the following apps may contain spy-/ad-ware and some of them may slow down so that it could be become unusable.




Ideas

Unformated plain text ideas by frik85. I will extend, sort and format the following text later.


SQLite3 database files:

* Metadata.db
* Contents.db

* Conversations.db
* Contacts.db



Views (GUI):

* Quick search (for normal user)
* Advanced search (regular expressions, query builder, extended metadata, etc.)
* Timeline (like the WinFS demp app: list all indexed files on a timeline)
* Dynamic Folders (saved queries to a xml file, the explorer view them as a folder)


Quick search:

Simple textbox, no other visible gui objects which could confuse user.
Simple regular expressions will be composed by the program logic, similar to web search engines or e.g. "Spotlight":
 * space characters => AND
 * "|" => OR
 * "+" => "="
 * "-" => "!="
 * maybe support for "(" and ")"

 Sample Queries:

  1) taskmgr.exe
  2) react*.pdf
  3) *.jpg -games +wallpaper


Advanced Search:

It could be wise to combine the quick search and the advanced search. For example by default only a simple textbox is visible.
If the user click on the "advanced search" button, more gui objects will be visible.

 Sample Queries:

  1.a) File.Name="taskmgr" AND File.Extention="exe"
  1.b) File.Filename="taskmgr.exe"
  2) File.Name="react*" AND File.Extention="pdf"
  3) File.Extention="jpg" AND File.Name!="*games*" AND File.Name="*wallpaper*"
  4) File.Extention="jpg" AND Picture.Height>=768 AND Picture.Width>=1024
  5) File.Category="Media" AND File.Size>="100000" AND ( Video.Description="*reactos*" OR Audio.Composer="*friedl*" ) SORT BY "File.Size"
  6) File.Date>=Date.Tomorrow AND File.Date<=Date.NextWeekend


Feature requests:

* search only within a directory
* Beagle includes an optional Firefox Extension. This is used to index web sites as you view them. 
* Metadata, fulltext and thumbnails are extracted from documents, images, mp3 and other media allowing quick and accurate information retrieval.
* Advanced search with boolean operators  
* Better support for removable media  
* Web interface (like Google Desktop Search)  
* Definition of document categories  
* Scheduled updates
* Tag support (like ajax webpages, e.g. gmail)
* Timeline view/app of all indexed files, contacts, etc. (like WinFS demo app)
* Saved queries (like apple spotlight's "dynamic dirs")
* Multiuser catalog repository  
* Integrated Web search  






Kat is a framework designed to allow KDE applications to index and retrieve files.
Metadata, fulltext and thumbnails are extracted from documents, images, mp3 and other media allowing quick and accurate information retrieval.
Kat is similar to the Windows applications WhereIsIt and Google Desktop Search, the Gnome program Beagle and the OS X utility Spotlight. It is completely written in C++, using Qt3, KDE and KIO libraries.
The application is based on the extensible kfile plugin architecture of KDE in order to facilitate the creation of new media managers for emerging file formats.
Kat is the first KDE application using the new fulltext kfile plugins.
Information retrieval relies on the powerful SQLite3 embedded database engine.


http://www.whereisit-soft.com/


http://www.beaglewiki.org/Optional_prerequisites


Is there a Beagle IRC channel?
Yes: 

Server: irc.gimp.org
Channel: #dashboard

--> http://www.beaglewiki.org/FAQ








TM: I notice a few distros are shipping with Beagle, how is yours different? better? 

Roberto: From a technical point of view:
Beagle is a Gnome application, written in C# (and another 2 or 3 languages), using the MONO library and lucene. Kat is a KDE application, written in C++, using KDE and KIO libraries, using and extending the KDE architecture.

From a functional point of view:
Beagle is only a Desktop Search engine, like Google desktop search. Kat technology will be used as a base for the Context Linking engine of KDE called Tenor. This means that we index files and content like Beagle, but then we go beyond this and link the items based on their context.

The result is: better and more accurate search. 





http://dot.kde.org/1113428593/
http://www.osnews.com/story.php?news_id=10295

http://www.linuxplanet.com/linuxplanet/reviews/5816/1/