MySearchEngine (Personalized Search Engine) is a Java software to search files and folders in an OS file system. It differs from general OS file search engines in that it personalizes the indexing setup so that users can choose which directories to index or remove from an existing index and it can also suggest queries just like Google's "Did you mean" feature. The customization of indexing and query suggestion greatly improves search speed and make user experience more comfortable. MySearchEngine can also extract text content from files of many widely used file types such as pdf, doc, ppt, and mp3 to improve the index quality.

The motivation of implementing this tool comes from my everyday experience of finding a file. I usually face four cases. In the first case where I know the file path, I need to click directories on my OS file system until I find the file. This procedure usually takes me 25 seconds in average. In the second case that I forget the file location except the name of the file or its parent directory, it will take me unexpected amount of time. In the latter case I usually turn to the OS built-in file search engine but it is too slow to response because it indexes every files in the file system, and I'm unable to configure which directories I need to index or remove from the index. The third case is more challenging, where I don't clearly remember the query terms. In this case, a "Did you mean" feature that is statistically dependent with my search experience and my corpus would be very helpful. The fourth case is most challenging where I need to do a content based search as in a general search engine, so that query terms do not necessarily occur in titles. General OS built-in search engines cannot meet the above needs. If you get the same headache with me, this tool is right for you.

1. Content based personalized search engine.
2. Embedded advanced retrieval models.
3. Customized indexing where users can choose which directories to add into or remove from the search index.
4. Did you mean like query suggestion.
5. Text extraction from files of many widely used file types.
6. Support of opening a search result and its file location.
7. Drag and drop support for indexing.

8. Copy and paste support for indexing.
9. Simple search operators.
10. Query completion.
11. Query term suggestion.
12. Mouse gesture recognition.
13. Undo and redo support.


MySearchEngine is a stand-alone software, just run it by either double click or a command line. No configuration is required.

Search operators:
filetype:[\\s.]*[a-zA-Z]*    --    Show search results of the specified file type. Please use "dir", "folder", or "directory" to search folders.
ftype:[\\s.]*[a-zA-Z]* -- Show search results of the specified file type. Please use "dir", "folder", or "directory" to search folders.
ext:[\\s.]*[a-zA-Z]* -- Show search results of the specified file type. Please use "dir", "folder", or "directory" to search folders.
"term"    --    Search results must contain the double quoted query term.
~term -- Search results must not contain the query term appearing after the operator '~'.

Major accelerators:
Ctrl + K / Enter: Search
Alt + C: Clear query and search results
Ctrl: Keep the file path for the search result in the bottom text field
Tab: Select the next suggested query or token from a drop-down list under the search box
Alt + numKey(1-9): Click the numKey-th result
Ctrl + numKey(1-9): Go to the numKey-th tab
Ctrl + Tab: Switch to the next tab
Ctrl + Shift + Tab: Switch to the previous tab
Ctrl + Q: Exit
Ctrl + Z: Undo
Ctrl + Y: Redo
Alt + <-: Re-search previous query
Alt + ->: Re-search next query

Mouse control:
Single left click:  Execute a search result, open either a file or a directory
Single right click: Open the parent directory of a search result being clicked
Drag by middle mouse button: Remove a document or directory from index

Mouse gestures:
"Left"(L): Re-search previous query
"Right"(R): Re-search next query
"Up + Left"(UL): Go to previous tab
"Up + Right"(UR): Go to next tab
"Down + Right"(DR): Exit


MySearchEngine depends on Apache Lucene, Apache Tika, and Smardec MouseGestures.

Author: Mingjie Qian
Version: 3.0
July 6th, 2014