Debtags smart search

I did more thinking and prototyping to the debtags smart search ideas. The result is an interactive search session with quite some smartness inside.

It shows two groups of tags to choose from. The first group of tags has tags related to the keyword search. The second group has tags that, if choosen, operate a substantial trimming of the result set.

We're not yet reading for uploading the new library stack to Debian. If you want to play from subversion repositories, see this mail.

I can however show an example interactive session needs to be shared. Notice how I get to a high quality solution in just 2 iterations:

$ tools/debtags smartsearch image editor
Tag selection:

1) hardware::camera (44/18710)
2) works-with::image:raster (335/18710)
3) hardware::storage:dvd (27/18710)
4) special::meta (86/18710)
5) devel::debian (55/18710)
6) works-with::archive:iso9660 (44/18710)
7) use::typesetting (61/18710)

8) special::not-yet-tagged (5745/18710)
9) devel::library (3727/18710)
10) role::sw:utility (2707/18710)
11) interface::x11 (2434/18710)
12) interface::commandline (2137/18710)
13) x11::application (2040/18710)
14) role::content:data (1573/18710)
18710 packages selected so far.
Your choice (+#, -#, =#, K word, View, Done, Quit, ?): +2 -9 +11
Tag selection:
1) interface::x11 (wanted)
2) works-with::image:raster (wanted)
3) devel::library (unwanted)

4) hardware::camera (10/113)
5) special::meta (1/113)
6) use::typesetting (1/113)
7) works-with::video (8/113)
8) made-of::lang:c++ (2/113)
9) suite::gnome (9/113)
10) uitoolkit::athena (9/113)

11) uitoolkit::gtk (50/113)
12) role::sw:application (41/113)
13) use::viewing (39/113)
14) role::sw:utility (33/113)
15) use::editing (30/113)
16) uitoolkit::qt (23/113)
17) suite::kde (18/113)
113 packages selected so far.
Your choice (+#, -#, =#, K word, View, Done, Quit, ?): +15
Tag selection:
1) interface::x11 (wanted)
2) use::editing (wanted)
3) works-with::image:raster (wanted)
4) devel::library (unwanted)

5) hardware::camera (1/30)
6) special::meta (1/30)
7) works-with::video (3/30)
8) made-of::lang:c++ (1/30)
9) suite::gnome (2/30)
10) uitoolkit::athena (4/30)
11) x11::application (24/30)

12) role::sw:application (15/30)
13) uitoolkit::gtk (11/30)
14) uitoolkit::qt (7/30)
15) suite::gimp (6/30)
16) suite::kde (6/30)
17) x11::application (24/30)
18) role::content:data (5/30)
30 packages selected so far.
Your choice (+#, -#, =#, K word, View, Done, Quit, ?): d
gimp - The GNU Image Manipulation Program
babygimp - An icon editor in Perl-Tk
cinepaint - motion picture image painting and retouching tool
cinepaint-data - data files for CinePaint
digikamimageplugins - image editor plugins for digikam and showfoto
kiconedit - an icon editor for KDE
kchart - a chart drawing program for the KDE Office Suite
gimp-data-extras - An extra set of brushes, palettes, and gradients for The GIMP
scribus - Open Source Desktop Publishing
xpaint - simple paint program for X
puredata - realtime computer music and graphics system
gimp-data - Data files for The GIMP
gimp-python - Python support and plugins for The GIMP
gimp-gap - The GIMP Animation Package
gimp-texturize - generates large textures from a small sample
gnome-iconedit - A small tool to create icons for the gnome-desktop
gpaint - GNU Paint - a small, easy to use paint program for GNOME
gsumi - pressure sensitive "ink" drawing
gtkmorph - Digital image warp and morph (gtk)
gtkmorph-example - digital image warp and morph, examples
xmorph - digital image warp and morph (x11)
imaptool - A tool for creating client-side image maps
junior-art - Debian Jr. Art
kcoloredit - a color palette editor and color picker for KDE
kolourpaint - a simple paint program for KDE
kimagemapeditor - HTML image map editor for KDE
pixmap - A pixmap editor
saods9 - image display tool for astronomy
sppc - Simple Panel Plot Composer
tkpaint - Versatile bitmap/pixmap editing tool

This other section is worth seeing as well: it shows the relevant tags computed for various keyword searches (I cut out the part which is always the same):

$ tools/debtags smartsearch kernel image
1) admin::boot (132/18710)
2) use::driver (108/18710)
3) admin::kernel (252/18710)
4) protocol::dhcp (24/18710)
5) role::sw:source (79/18710)
6) admin::hardware (161/18710)
7) devel::debian (55/18710)
Your choice (+#, -#, =#, K word, View, Done, Quit, ?): k audio editor
1) sound::midi (33/18710)
2) works-with::music-notation (25/18710)
3) works-with::audio:wav (51/18710)
4) works-with::video:oggtheora (5/18710)
5) field::arts (21/18710)
6) sound::mixer (65/18710)
7) sound::recorder (10/18710)
Your choice (+#, -#, =#, K word, View, Done, Quit, ?): k package manager
1) x11::window-manager (79/18710)
2) suite::xfce (34/18710)
3) x11::display-manager (10/18710)
4) x11::theme (82/18710)
5) works-with::software:package (110/18710)
6) suite::kde (503/18710)
7) made-of::data:icons (43/18710)
Your choice (+#, -#, =#, K word, View, Done, Quit, ?): k debian package
1) suite::debian (282/18710)
2) devel::packaging (75/18710)
3) devel::debian (55/18710)
4) works-with::software:package (110/18710)
5) use::dialing (47/18710)
6) admin::user-management (114/18710)
7) hardware::modem (87/18710)
Your choice (+#, -#, =#, K word, View, Done, Quit, ?): k linux kernel
1) admin::kernel (252/18710)
2) role::sw:source (79/18710)
3) use::driver (108/18710)
4) interface::svga (31/18710)
5) hardware::usb (32/18710)
6) admin::filesystem (151/18710)
7) hardware::camera (44/18710)
Your choice (+#, -#, =#, K word, View, Done, Quit, ?): k gps
1) field::geography (57/18710)
2) hardware::emulation (98/18710)
3) works-with::image:vector (107/18710)
4) devel::ide (41/18710)
5) works-with::software:running (93/18710)
6) made-of::lang:ada (26/18710)
7) x11::application (2040/18710)
Your choice (+#, -#, =#, K word, View, Done, Quit, ?): q

This thing is getting smart. Can't wait for this to get seriously picked up by some GUI (think adept!).