On 1/12/18 3:29 AM, Heiko Bauke wrote:
At the moment, one can collect images by specific criteria. Some of
these criteria can be expressed by numerical values, e.g., focal
length or ISO. It would be nice if one could collect not only images
taken at a specific ISO, let's say, but also taken at an ISO
larger/greater than a specific given value.
In a next step one could add the possibility to collect images of a
width/height larger/smaller than a specific value. The possibility to
collect images of a particular size only would not be powerful enough
for most use cases. There are too many possible sizes.
A really, really good solution to this would be to dump all available
image metadata into a full-text indexer and allow the user to filter
using queries. Done right, it gives users immense flexibility and saves
having to write and maintain application-specific filtering infrastructure.
I've used Lucene to do similar things on several projects over the last
15 years, some indexing tens of millions of records, with a great deal
of success. It's fast, reasonably lightweight, solid, makes a very
small index relative to the corpus if you're not using it as a document
store and has a query language that can't be beat. Lucene supports
fields, which would allow search on specific attributes in addition to
free-form, Google-style queries. For example, a query to pull images
taken with a Nikon at ISOs up to 1000 taken during 2017, have five
stars, contain the word "green" (maybe as a result of having the green
label applied) and not containing the word "wedding" anywhere would look
like this:
maker:nikon iso:[0 TO 1000] createdate:[20170101 TO 20171231]
stars:5 green -wedding
The down side is that Lucene is written in Java, and I'm pretty sure the
last thing anyone wants to do is try to integrate it directly with DT.
There are ports to other languages (including C++, which could be
wrapped in C) that are binary-compatible with the Java version's indexes
and, of course, other indexers that could be considered. It would also
be possible to integrate with an external program that takes insertions,
updates, deletions and queries from DT and returns results via a pipe or
socket. The presence or absence of the program could be used a switch
for whether or not DT enables its indexing features.
I don't have the spare cycles to take on the complete project, but I
would be more than happy to provide guidance on how to organize the
index, evaluate indexing software and do enough at-the-edges integration
work to make the indexing work easy to incorporate into DT.
--Mark
___________________________________________________________________________
darktable developer mailing list
to unsubscribe send a mail to darktable-dev+unsubscr...@lists.darktable.org