subsurface/core
Berthold Stoeger 6434ad2628 filter: add fulltext filtering code
Add code that indexes all words of a dive and provides searching
for words.

A query is represented by the FullTextQuery class, which can be
initialized by assigning a string to it. It is basically a list
of words.

The result of a search is stored in the FullTextResult class,
which is a list of dives.

The actual indexing and searching is implemented in the FullText
class. However, this class is not exported because the interface
is partially accessible to C. Notably, the reloading of the
fulltext index is done from the C core.

Currently, the indexing and searching is totally unoptimized.
In a ~4000 dives test-log searches typically took single-digit
ms times. There is ample room for optimization (e.g. when
searching for multiple words, chose the words with few dives
first and when down to a few dives, check them individually).

The words of each dive are tokenized and uppercased and
cached with the dive. A pointer to these words is stashed
in the dive structure.

For now, compile only on desktop.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-03-01 10:21:44 -08:00
..
settings Cleanup: remove erroneous comments 2020-02-08 14:00:44 -08:00
subsurface-qt Cleanup: lower-case filenames in core/subsurface-qt/ 2020-02-04 02:16:46 +01:00
android.cpp Android: print Android HW information 2019-09-21 15:13:10 -07:00
applicationstate.cpp Turn application state into enum 2019-05-12 12:33:55 -07:00
applicationstate.h Turn application state into enum 2019-05-12 12:33:55 -07:00
btdiscovery.cpp Add Cressi BLE name filtering for bluetooth discovery 2020-02-16 12:52:56 -08:00
btdiscovery.h Revert the singleton PR 2019-09-27 16:26:58 -07:00
checkcloudconnection.cpp Cloud storage: remove outdated certificate hack 2019-10-09 22:38:29 +03:00
checkcloudconnection.h get rid of some foreach and Q_FOREACH constructs 2019-04-12 12:59:17 +03:00
cloudstorage.cpp core: correct cloudstorage.cpp to use static qPrefCloudStorage functions. 2019-12-05 11:48:26 -08:00
cloudstorage.h get rid of some foreach and Q_FOREACH constructs 2019-04-12 12:59:17 +03:00
CMakeLists.txt filter: add fulltext filtering code 2020-03-01 10:21:44 -08:00
cochran.c code cleanup: introduce empty_cylinder constant 2020-01-10 02:37:03 +09:00
cochran.h
color.cpp Cleanup: silence clang missing braces warning in core/color.cpp 2018-09-01 11:31:18 -07:00
color.h Indicate negative cylider pressure 2019-08-08 08:56:44 -07:00
compressibility.r
configuredivecomputer.cpp Cleanup: move file-related function declarations to file.h 2019-08-08 16:26:31 -07:00
configuredivecomputer.h Fix broken windows build with latest MXE 2019-08-29 12:55:25 -07:00
configuredivecomputerthreads.cpp Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
configuredivecomputerthreads.h
connectionlistmodel.cpp Mobile: reinstate roleNames function in ConnectionListModel 2019-04-16 23:43:14 +12:00
connectionlistmodel.h Mobile: reinstate roleNames function in ConnectionListModel 2019-04-16 23:43:14 +12:00
datatrak.c code cleanup: introduce empty_cylinder constant 2020-01-10 02:37:03 +09:00
datatrak.h Cleanup: const-ify functions taking dives and divecomputers 2018-08-23 14:41:01 -07:00
deco.c Parser: remove global state 2019-08-08 16:26:31 -07:00
deco.h Parser: remove global state 2019-08-08 16:26:31 -07:00
device.c
device.h Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
devicedetails.cpp
devicedetails.h
display.h Selection: move selection functions from divelist.c to selection.c 2019-12-04 13:00:23 +01:00
dive.c code cleanup: use gasmix_air for zero initialized gas 2020-01-10 02:37:03 +09:00
dive.h filter: add fulltext filtering code 2020-03-01 10:21:44 -08:00
divecomputer.cpp Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
divecomputer.h
divefilter.cpp filter: move StringMode out of FilterData 2020-03-01 10:21:44 -08:00
divefilter.h filter: move StringMode out of FilterData 2020-03-01 10:21:44 -08:00
divelist.c code cleanup: add empty table structures 2020-01-10 02:37:03 +09:00
divelist.h Selection: move selection functions from divelist.c to selection.c 2019-12-04 13:00:23 +01:00
divelogexportlogic.cpp Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
divelogexportlogic.h avoid duplicate and inconsistent applying of QDir::separator() 2019-03-27 07:36:33 -07:00
divemode.h Cleanup: move planner/deco related declarations planner/deco.h 2019-08-08 16:26:31 -07:00
divesite-helper.cpp Dive site: use own copy of taxonomy in dive-site-edit widget 2018-10-13 21:41:41 -04:00
divesite.c Core: implement move functions for dive and dive_site table 2019-10-02 08:04:49 -07:00
divesite.h code cleanup: add empty table structures 2020-01-10 02:37:03 +09:00
divesitehelpers.cpp Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
divesitehelpers.h Geo lookup: don't pass arguments / result via global object 2018-10-11 16:25:02 -07:00
downloadfromdcthread.cpp Import: keep dive and dive site tables in DiveImportedModel 2019-10-02 08:04:49 -07:00
downloadfromdcthread.h Import: keep dive and dive site tables in DiveImportedModel 2019-10-02 08:04:49 -07:00
equipment.c code cleanup: introduce empty_cylinder constant 2020-01-10 02:37:03 +09:00
equipment.h code cleanup: introduce empty_cylinder constant 2020-01-10 02:37:03 +09:00
errorhelper.c Don't expose 'detach_buffer()' to membuffer users 2019-10-27 12:42:54 -07:00
errorhelper.h Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
exif.cpp
exif.h
file.c Fix potential crash when saved_git_id is NULL 2019-08-10 20:59:53 +02:00
file.h Cleanup: move file-related function declarations to file.h 2019-08-08 16:26:31 -07:00
format.cpp
format.h
fulltext.cpp filter: add fulltext filtering code 2020-03-01 10:21:44 -08:00
fulltext.h filter: add fulltext filtering code 2020-03-01 10:21:44 -08:00
gas-model.c Cleanup: replace macro by inline function in gas-model.c 2019-08-08 15:22:09 -07:00
gas.c Cleanup: move gas-functions to own translation unit 2019-06-19 13:11:10 -07:00
gas.h Cleanup: move gas-functions to own translation unit 2019-06-19 13:11:10 -07:00
gaspressures.c Cylinders: access cylinders with get_cylinder() 2019-11-09 19:19:04 +01:00
gaspressures.h Cleanup: Make gaspressures.h a regular include file 2019-06-19 13:11:10 -07:00
gettext.h
gettextfromc.cpp
gettextfromc.h
git-access.c Cleanup: move file-related function declarations to file.h 2019-08-08 16:26:31 -07:00
git-access.h prefs: git_local_only is not a preference 2018-09-10 16:26:49 -07:00
gpslocation.cpp mobile/gps: make sure updated GPS data are saved 2020-02-13 14:01:57 -08:00
gpslocation.h Mobile: provide better tracking of applied GPS fixes 2019-10-26 11:38:26 -07:00
imagedownloader.cpp code cleanup: consistently initialize zero duration_t 2020-01-10 02:37:03 +09:00
imagedownloader.h Profile: add "synchronous" mode for picture plotting 2019-02-07 16:06:43 +01:00
import-cobalt.c Cleanup: return cylinder from cylinder_start() in parser 2019-11-09 19:19:04 +01:00
import-csv.c Correcting typos of the word celsius 2020-02-09 12:45:55 -08:00
import-csv.h Parser: parse into custom dive site table 2019-04-12 18:19:07 +03:00
import-divinglog.c Cylinders: access cylinders with get_cylinder() 2019-11-09 19:19:04 +01:00
import-shearwater.c Cylinders: access cylinders with get_cylinder() 2019-11-09 19:19:04 +01:00
import-suunto.c Cleanup: return cylinder from cylinder_start() in parser 2019-11-09 19:19:04 +01:00
ios.cpp Cleanup: move file-related function declarations to file.h 2019-08-08 16:26:31 -07:00
libdivecomputer.c code cleanup: introduce empty_cylinder constant 2020-01-10 02:37:03 +09:00
libdivecomputer.h Core: unconditionally include stdio.h in libdivecomputer.h 2019-08-10 09:16:01 -07:00
liquivision.c code cleanup: introduce empty_cylinder constant 2020-01-10 02:37:03 +09:00
load-git.c load-git: fix up any corrupted modechange event names 2020-02-15 10:12:35 +01:00
macos.c Add missing header files to macos.c 2019-08-11 08:20:38 +02:00
membuffer.c Don't expose 'detach_buffer()' to membuffer users 2019-10-27 12:42:54 -07:00
membuffer.h Don't expose 'detach_buffer()' to membuffer users 2019-10-27 12:42:54 -07:00
metadata.cpp code cleanup: replace created() with birthTime() for Qt >= 5.10 2020-01-10 02:37:03 +09:00
metadata.h Add 'location_t' data structure 2018-10-21 19:55:09 +03:00
metrics.cpp
metrics.h
ostctools.c Cleanup: clean up resource handling in ostctools.c 2019-10-26 19:17:53 -07:00
parse-gpx.cpp Parse GPX dive coordinates: Qt XML framework 2020-01-25 23:25:33 +02:00
parse-gpx.h core: move GPX parsing into core 2020-01-24 09:51:02 -08:00
parse-xml.c code cleanup: introduce empty_cylinder constant 2020-01-10 02:37:03 +09:00
parse.c Cleanup: introduce empty_weightsystem constant 2019-12-05 10:14:25 -08:00
parse.h Cleanup: return cylinder from cylinder_start() in parser 2019-11-09 19:19:04 +01:00
planner.c code cleanup: introduce empty_cylinder constant 2020-01-10 02:37:03 +09:00
planner.h Cleanup: remove global disclaimer variable 2019-09-10 21:31:21 +02:00
plannernotes.c Cylinders: access cylinders with get_cylinder() 2019-11-09 19:19:04 +01:00
pref.h mobile-widgets: add pure interface for passing values to QML 2020-01-18 17:31:58 -08:00
profile.c Add current GF to infobox 2019-11-28 12:23:04 -08:00
profile.h Add current GF to infobox 2019-11-28 12:23:04 -08:00
qt-ble.cpp Update to new libdivecomputer version 2020-01-27 09:51:31 -08:00
qt-ble.h Update to new libdivecomputer version 2020-01-27 09:51:31 -08:00
qt-gui.h core,tests: change qml register function 2018-09-11 17:22:58 -07:00
qt-init.cpp code cleanup: QLatin1Literal is deprecated in Qt 5.14 2020-01-26 16:49:42 -08:00
qthelper.cpp mobile/summary: implement firstDiveDate and lastDiveDate 2020-02-08 10:29:36 -08:00
qthelper.h mobile/summary: implement firstDiveDate and lastDiveDate 2020-02-08 10:29:36 -08:00
qtserialbluetooth.cpp core/qtserialbluetooth.cpp: use QEventLoop for polling 2020-01-27 09:51:31 -08:00
save-git.c core: read and write the user-specified salinity 2020-01-06 07:00:34 +09:00
save-html.c Cleanup: remove const bool parameters and return types 2020-02-09 12:13:18 -08:00
save-html.h Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
save-profiledata.c Cleanup: remove const bool parameters and return types 2020-02-09 12:13:18 -08:00
save-profiledata.h Cleanup: move file-related function declarations to file.h 2019-08-08 16:26:31 -07:00
save-xml.c Cleanup: remove const bool parameters and return types 2020-02-09 12:13:18 -08:00
selection.cpp Cleanup: lower-case filenames in core/subsurface-qt/ 2020-02-04 02:16:46 +01:00
selection.h Selection: provide convenience function for single-dive selection 2019-12-07 10:23:44 -08:00
serial_ftdi.c Fix Cressi interface ftdi opening bug 2018-11-18 20:01:28 +02:00
sha1.c
sha1.h
ssrf.h core: remove LOG_STP from mobile 2019-12-13 07:04:00 -05:00
statistics.c Core: set gas use to zero if no values are given 2019-11-16 09:23:39 +01:00
statistics.h Core: dynamically allocate the result of get_gas_used() 2019-11-09 19:19:04 +01:00
strndup.h
strtod.c
structured_list.h Cleanup: fix comment to STRUCTURED_LIST_FREE 2019-06-19 13:11:10 -07:00
subsurface-string.h
subsurfacestartup.c core: add --testqml flag to mobileExecutable 2019-11-26 09:44:13 -08:00
subsurfacestartup.h Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
subsurfacesysinfo.cpp drop support for Qt 5.4 and before 2019-03-27 07:36:33 -07:00
subsurfacesysinfo.h drop support for Qt 5.4 and before 2019-03-27 07:36:33 -07:00
table.h Core: implement move functions for dive and dive_site table 2019-10-02 08:04:49 -07:00
tag.c Don't expose 'detach_buffer()' to membuffer users 2019-10-27 12:42:54 -07:00
tag.h Cleanup: move tag functions into own translation unit 2019-06-19 13:11:10 -07:00
taxonomy.c Dive site: use own copy of taxonomy in dive-site-edit widget 2018-10-13 21:41:41 -04:00
taxonomy.h Dive site: use own copy of taxonomy in dive-site-edit widget 2018-10-13 21:41:41 -04:00
time.c
trip.c Selection: move selection functions from divelist.c to selection.c 2019-12-04 13:00:23 +01:00
trip.h code cleanup: add empty table structures 2020-01-10 02:37:03 +09:00
uemis-downloader.c Check if all required bytes were read 2019-11-16 12:34:30 -08:00
uemis.c Core: remove MAX_CYLINDERS restriction 2019-11-09 19:19:04 +01:00
uemis.h Dive site: use pointer instead of uuid in uemis_helper 2018-10-29 00:09:31 +00:00
units.c Fix broken windows build with latest MXE 2019-08-29 12:55:25 -07:00
units.h mobile-widgets: add pure interface for passing values to QML 2020-01-18 17:31:58 -08:00
unix.c Don't expose 'detach_buffer()' to membuffer users 2019-10-27 12:42:54 -07:00
uploadDiveLogsDE.cpp core: fix incorrect changes in divelogs.de export 2020-02-17 10:50:51 -08:00
uploadDiveLogsDE.h Cleanup: remove const bool parameters and return types 2020-02-09 12:13:18 -08:00
uploadDiveShare.cpp core: divehare avoid race problem. 2019-12-12 10:10:01 -05:00
uploadDiveShare.h core: divehare change slot names 2019-12-12 10:10:01 -05:00
version.c
version.h
videoframeextractor.cpp Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
videoframeextractor.h Dive media: Extract thumbnails from videos with ffmpeg 2018-07-28 15:31:25 -07:00
webservice.h
windows.c Cleanup: move file-related function declarations to file.h 2019-08-08 16:26:31 -07:00
windowtitleupdate.cpp Cleanup: Make WindowsTitleUpdate a global object 2018-07-30 13:55:23 -07:00
windowtitleupdate.h Cleanup: Make WindowsTitleUpdate a global object 2018-07-30 13:55:23 -07:00
worldmap-options.h
worldmap-save.c Cleanup: remove const bool parameters and return types 2020-02-09 12:13:18 -08:00
worldmap-save.h Cleanup: remove const bool parameters and return types 2020-02-09 12:13:18 -08:00
xmp_parser.cpp Cleanup: use helper to avoid NULL dereference 2019-10-28 05:44:33 -07:00
xmp_parser.h Metadata: rudimentary support for XMP metadataa in MP4-based videos 2018-09-25 14:59:14 -07:00