• Stars
    star
    167
  • Rank 226,635 (Top 5 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created over 10 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A JavaFX based desktop search application.

FXDesktopSearch - The free search application for your desktop

FXDesktopSearch is a Java and JavaFX based Desktop Search Application. It crawls a configured set of directories and allows you to do fulltext search with different languages support on the content.

During the fulltext search, you can do drilldown queries on the found documents to restrict search results by date, author, document type or language. Beside the fulltext search analysis, advanced natural language processing is done. This extracts known entities such as persons, locations or organizations from the text and makes them available for drill-down facetted search.

FXDesktopSearch can crawl the local and remote filesystems. It also watches already crawled files for changes, so once a file is indexed and changed on the filesystem, the index is automatically updated.

Build

Download

Releases are available at GitHub or

Installation

Windows

Installation on Windows systems is quite easy. Download the .exe installer and execute it with administrator permissions. This will install FXDesktopSearch and the required Java runtime on your machine.

Starting with Windows 10, you can also install FXDesktopSearch from Microsoft App Store.

Linux

Installation on Unix systems is also easy. Just download the .rpm file and execute it using one of the the following commands according to your Linux distribution type:

Packaging method How to install using the shell
RedHat Package Manager sudo rpm -i downloadedrpmfile.rpm
Yum sudo yum install downloadedrpmfile.rpm
Debian either use the provided .deb file or use "apt-get install alien" to install the alien package converter. Then use "alien --to-deb --keep-version " to convert the rpm to a deb file. Finally use "sudo dpkg --install createddebfilefromalien.deb" to install the file.

Usage

The following start screen is shown after you start the application:

After the first launch, you have configure the crawl locations and some other settings. This configuration can be done by clicking on Hamburger Menu -> Configure.

Configuration

The configuration screen is triggered by using Hamburger Menu -> Configure. The following dialog will appear:

The following options are available:

Option Description
Show similar search results Can be enabled if you want to include similar search results for every match. Please not that this is very processing insensitive.
Limit search results to This is the number of search results presented to the user.
Number of suggestions This is the number of search phrase suggestions. They are shown as soon as you start to type words into the query text field.
Number of words before suggestion span Include this number of words in the search phrase suggestion before a matching word
Number of words after suggestion span Include this number of words in the search phrase suggestion after the last match
Slop for suggestion spans Allow this number of words between entered words for matching search phrase suggestions
Require suggestions to be in order If enabled, suggestions are only shown for the exact order by query terms.
Indexed directories This is the list of directories to crawl and index
Scanned documents Check every document type you want to index
Language analyzers Advanced: enable or disable language specific analyzers.

Doing some search

After you have configured the application, crawling starts automatically a few seconds after application start. When crawling is completed, the index can be updated by clicking on Hamburger Menu -> Perform complete crawl (this option will be grayed out while crawling). Now FXDesktopSearch will scan the configured paths and add the file to the index. You can see the indexing progress in the status bar of the application.

After the crawl is finished, you can start to search documents. The following search screen will be shown. Now you can enter a search phrase and click the magnifier icon. A search result as follows will be displayed:

You can click on the facets on the top of the search result to further restrict(drilldown) your search result. You can also click on file names to open the files using the assigned application. FXDesktopSearch also detects similar or duplicate files, too! These files are listed in a green color below the filename. There is also some highlighted text to show what was the best matching text snippet of your search.

FXDesktopSearch gives for every found document a star rating. Five stars mean this is a very good match. Zero stars mean that the match was not very good, but there was still a match.

Search suggestions

While typing a search phrase, FXDesktopSearch tries to suggest search phrases you might also want to consider. The following screenshot shows an example of this functionality:

The search suggestion is restricted or modified while you are typing. Please not that at least three characters must be entered per single word of your search phrase to enable search suggestions.

Under the hood

FXDesktopSearch has a hybrid JavaFX2/HTML5 user interface. This means that the UI is basically a JavaFX scene with an embedded JavaFX WebView. The WebView renders a HTML page, which is delivered by an embedded Jetty WebServer. Using HTML allows us to generate and style complex user interfaces without creating new JavaFX controls.

Under the hood FXDesktopSearch uses Apache Lucene to build the fulltext index for the crawled documents. It also uses Apache Tika for content and metadata extraction.

The FileCrawler reads from a parallel Java 8 stream of files and passes them to the ContentExtractor. The ContentExtractor extracts the content and the metadata and passes the result to the LuceneIndexHandler which uses the Lucene Near-Realtime-Search Feature(NRT). The LuceneIndexHandler writes or updates the file in the Lucene index and also generates the search facets for later drilldown queries.

Modified files are tracked by the Java NIO WatchService API. Every file modification is send to the ContentExtractor and the final results are also updated by the LuceneIndexHandler in the fulltext index.

The embedded webserver is available by opening http://127.0.0.1:4711/search

More Repositories

1

Bytecoder

Framework to interpret and transpile JVM bytecode to JavaScript, OpenCL or WebAssembly.
Java
782
star
2

MogwaiERDesignerNG

Java 2D & 3D visual entity relationship design & modeling (ERD,SQL) for Oracle,MSSQL,Postgres and MySQL
Java
141
star
3

GameComposer

GameComposer is a game authoring tool and also a game runtime environment targeting at desktop and mobile devices.
Java
66
star
4

flight-recorder-starter

This is a Spring Boot 2 Starter exposing the JDK Flight Recorder as a Spring Boot Actuator Endpoint.
Java
29
star
5

HystrixSpring

This shows how to embedd Hystrix in a non invasive manner into existing Spring applications.
Java
23
star
6

cdicron

A Java CDI Extension for scheduled tasks
Java
7
star
7

www_mirkosertic_de

The sources of my personal homepage
WebAssembly
4
star
8

javafxgraph

Automatically exported from code.google.com/p/javafxgraph
Java
4
star
9

mavensonarsputnik

Maven Plugin for Sputnik with Multi-Module Support
Java
3
star
10

Curse

A collection of maybe NOT useful Java Annotations
Java
3
star
11

sonardeltareport

A simple SonarQube Reporting Plugin for Pretested Commit Analysis
Java
3
star
12

OpenCVTest

Java
2
star
13

DDDCompileTimeValidator

A library to enforce a DDD compliant code structure at compile time
Java
2
star
14

TeaVMWASMTest

JavaScript
2
star
15

Notebooks

Common Jupyter Notebooks used for stuff
Jupyter Notebook
2
star
16

mirkosertic

1
star
17

MogwaiLooks

Java
1
star
18

WhoBrokeIt

WhoBrokeIt is a simple library to detect which VCS commit broke a particular unit test.
Java
1
star
19

EasyDAV

This is a simple implementation of a WebDAV enabled Server using Apache Jackrabbit WebDAV API.
Java
1
star
20

roomba500

Package to use the Roomba 5xx platform with ROS(Robotic Operation System)
Python
1
star
21

PrimCoverage

Java
1
star
22

TestGame

1
star
23

ConvNetJSTest

JavaScript
1
star
24

GroovyTest

Groovy
1
star
25

MSCI

Visualization of MSCI indices
HTML
1
star
26

revealjs-demo

A simple reveal.js blueprint for HTML-based presentations
HTML
1
star
27

spring-micronaut-quarkus

Java
1
star
28

Powerstaff

Java
1
star
29

Notefinder

Easily find notes and orientation on your guitar neck.
HTML
1
star
30

TurtleBotLidar

Very simple Turtlebot simulation with added Lidar sensor
JavaScript
1
star
31

MusicNoteCounts

A simple three-step service to automatically add note counts to your Guitar Pro or MusicXML score.
JavaScript
1
star