Bug 471556

Summary: Dolphin Search Does Not Properly Display Matching Results
Product: [Applications] dolphin Reporter: Abystus <abystus>
Component: searchAssignee: Dolphin Bug Assignee <dolphin-bugs-null>
Status: REPORTED ---    
Severity: major CC: dashonwwIII, kfm-devel, kurtbw, postix, tagwerk19
Priority: NOR    
Version First Reported In: 23.04.2   
Target Milestone: ---   
Platform: Neon   
OS: Linux   
See Also: https://bugs.kde.org/show_bug.cgi?id=435119
Latest Commit: Version Fixed In:
Sentry Crash Report:
Attachments: Example

Description Abystus 2023-06-29 03:24:15 UTC
Created attachment 159967 [details]
Example

SUMMARY

When searching for files in folders within dolphin it is very hit or miss for a match when the text clearly contains the characters being searched for.


STEPS TO REPRODUCE
1. Create a new folder and name it whatever you want
2. Create a few new files in that directory with several different variations of the same name, and possibly contain other special characters like underscores or dashes
3. Type in the word or characters that you know are included in all the files and see which ones match
4. Remove a character at a time to see how the search varies (you should see several files you created during this exercise do not show up in the results)
5. (Bonus bug) If you take it one step further and clear the search and press enter it will then list the folder that contains the files in addition to the files as if they were all in the same directory and not directly within that folder (the folder should never appear in a search within itself)

OBSERVED RESULT

Several files do not show up when searching, different variations of file names seem to determine what shows in the search results regardless of if the file contains the character sequence.

EXPECTED RESULT

For it to show all matching criteria regardless of what the file is called as long as it includes the character sequence entered in the search.

SOFTWARE/OS VERSIONS

Dolphin: 23.04.2
Operating System: KDE neon 5.27
KDE Plasma Version: 5.27.6
KDE Frameworks Version: 5.107.0
Qt Version: 5.15.10
Kernel Version: 5.19.0-45-generic (64-bit)
Graphics Platform: X11
Processors: 12 × AMD Ryzen 5 5600G with Radeon Graphics
Memory: 16.0 GiB of RAM
Graphics Processor: AMD Radeon RX 5500
Comment 1 Abystus 2023-07-21 04:09:06 UTC
Anyone had a chance to investigate this one yet?
Comment 2 Kurt 2023-08-12 18:12:45 UTC
Confirming.

Another example on one of my machines.  Search for ".iso" as though one wants to find .iso files for burning.  Dolphin's results do *not* exclude files with just "iso" in the file name.  

I would expect Dolphin's search to show *only* files with a ".iso" in the file name, so I can readily find the one I want to burn to a flash drive, or DVD.

SOFTWARE/OS VERSIONS

Dolphin:  22.12.3
(KDE Frameworks Version 5.103.0; Qt Version 5.15.8 (built against 5.15.8))

Operating System: Neptune 8.0
KDE Plasma Version: 5.27.5
KDE Frameworks Version: 5.103.0
Qt Version: 5.15.8
Kernel Version: 6.1.0-9-amd64 (64-bit)
Graphics Platform: X11
Comment 3 tagwerk19 2023-08-25 16:41:45 UTC
If you are using Neon, Dolphin is probably asking Baloo for search results. Have a look at Bug 463830 and:

    https://bugs.kde.org/show_bug.cgi?id=463830#c2

If you are typing a search phrase character by character, you will notice:

    In filename searches, you will get exact matches even if you type a single
    character, so searching for "1" will find a "file 1" but not "file 1a"

    Again in a filename search, if you don't find an exact match, you need to
    type two characters, so you need to type "fi" to find "file 1"

    In content searches, you need to type three characters to find matches
    within the content.

It can get a little tangled...
Comment 4 tagwerk19 2023-08-25 16:59:19 UTC
(In reply to Kurt from comment #2)
> ... Dolphin's results do *not* exclude files with just "iso" in the file name.  
Exclude? Include? I'm guessing you want "iso" files but not "isotopes.txt"

You can query Baloo for an exact match by:

    $ baloosearch filename=iso

or append a "$" to skip partial matches:

    $ baloosearch filename:iso$
Comment 5 Felix Ernst 2025-04-07 21:09:40 UTC
Git commit 4102ccb80457eea44ea280f0ace2a419602bc34b by Felix Ernst.
Committed on 07/04/2025 at 21:09.
Pushed by felixernst into branch 'master'.

Rewrite search integration

This huge commit is a nearly complete rewrite of the Dolphin search
code. It implements most of the improved Dolphin search UI/UX as
designed and discussed in a collaborative effort by Kristen McWilliam,
Jin Liu, Andy Betts, Tagwerk, a few others and me.
See https://invent.kde.org/system/dolphin/-/issues/46.

# Notable changes

- A toggle to change the search tool is provided as most contributors
deemed that useful in
https://invent.kde.org/system/dolphin/-/merge_requests/642#note_985112.
- The default search is changed to filenamesearch for maximum
reliability.
- Removing all search parameters will take users back to the view state
prior to starting a search instead of keeping the search results open.
- The UI for choosing file types or modification dates has been made
more powerful with more granularity and more options.
- Most search parameters can be configured from a popup menu which
gives us extra space for extra clarity.
- Labels and help buttons as well as hyperlinks to settings makes sure
the user always knows why some search parameters are unavailable in
some contexts.
- Chips show important search parameters while the popup is closed.
They allow quickly removing filters.
- The titles of the search and the input field placeholder message
change to make clear whether file names or file contents are searched.
- When the user actively switches the search tool, whether content
should be searched, or whether to search everywhere, this is preserved
for the initial state of the search bar when the user opens it the next
time after restarting Dolphin.

# Architecture

- The new DolphinQuery class is independent of the UI and contains all
search parameters modifiable in Dolphin as easy setters and getters.
- DolphinQuery objects are also used to update the states of every
component in the search UI. There is now a clear separation of UI and
search configuration/DolphinQuery.
- DolphinQuery is responsible for exporting to and importing from
search URLs.
- The search UI always reflects the currently configured DolphinQuery
no matter if the user changed the UI to change the DolphinQuery or
loaded a DolphinQuery/older search URL which then is reflected in the
UI.
- I tried to simplify all classes and their interaction between each
other as much as possible.
- I added some tests
Related: bug 386754, bug 446387, bug 470136, bug 480001, bug 483578, bug 488047, bug 488845, bug 500103, bug 435119, bug 458761, bug 475439, bug 477969
FIXED-IN: 25.08

M  +19   -4    src/CMakeLists.txt
M  +5    -0    src/config-dolphin.h.cmake
M  +22   -17   src/dolphinmainwindow.cpp
M  +2    -6    src/dolphinrecenttabsmenu.cpp
M  +103  -130  src/dolphinviewcontainer.cpp
M  +41   -30   src/dolphinviewcontainer.h
M  +2    -2    src/global.h
A  +356  -0    src/search/bar.cpp     [License: GPL(v2.0+)]
A  +206  -0    src/search/bar.h     [License: GPL(v2.0+)]
A  +150  -0    src/search/barsecondrowflowlayout.cpp     [License: LGPL(3+eV) LGPL(v3.0) LGPL(v2.1)]
A  +48   -0    src/search/barsecondrowflowlayout.h     [License: LGPL(3+eV) LGPL(v3.0) LGPL(v2.1)]
A  +52   -0    src/search/chip.cpp     [License: LGPL(3+eV) LGPL(v3.0) LGPL(v2.1)]
A  +101  -0    src/search/chip.h     [License: LGPL(3+eV) LGPL(v3.0) LGPL(v2.1)]
A  +0    -0    src/search/configurationpopup.h     [License: Trivial file]
M  +5    -1    src/search/dolphin_searchsettings.kcfg
D  +0    -312  src/search/dolphinfacetswidget.cpp
D  +0    -84   src/search/dolphinfacetswidget.h
M  +339  -70   src/search/dolphinquery.cpp
M  +278  -37   src/search/dolphinquery.h
D  +0    -575  src/search/dolphinsearchbox.cpp
D  +0    -189  src/search/dolphinsearchbox.h
A  +378  -0    src/search/popup.cpp     [License: LGPL(3+eV) LGPL(v3.0) LGPL(v2.1)]
A  +99   -0    src/search/popup.h     [License: LGPL(3+eV) LGPL(v3.0) LGPL(v2.1)]
A  +61   -0    src/search/selectors/dateselector.cpp     [License: LGPL(3+eV) LGPL(v3.0) LGPL(v2.1)]
A  +42   -0    src/search/selectors/dateselector.h     [License: LGPL(3+eV) LGPL(v3.0) LGPL(v2.1)]
A  +81   -0    src/search/selectors/filetypeselector.cpp     [License: LGPL(3+eV) LGPL(v3.0) LGPL(v2.1)]
A  +36   -0    src/search/selectors/filetypeselector.h     [License: LGPL(3+eV) LGPL(v3.0) LGPL(v2.1)]
A  +51   -0    src/search/selectors/minimumratingselector.cpp     [License: GPL(v2.0+)]
A  +42   -0    src/search/selectors/minimumratingselector.h     [License: LGPL(3+eV) LGPL(v3.0) LGPL(v2.1)]
A  +189  -0    src/search/selectors/tagsselector.cpp     [License: GPL(v2.0+)]
A  +45   -0    src/search/selectors/tagsselector.h     [License: GPL(v2.0+)]
A  +56   -0    src/search/updatablestateinterface.h     [License: LGPL(3+eV) LGPL(v3.0) LGPL(v2.1)]
A  +67   -0    src/search/widgetmenu.cpp     [License: LGPL(3+eV) LGPL(v3.0) LGPL(v2.1)]
A  +63   -0    src/search/widgetmenu.h     [License: LGPL(3+eV) LGPL(v3.0) LGPL(v2.1)]
M  +3    -3    src/tests/CMakeLists.txt
M  +1    -1    src/tests/dolphinmainwindowtest.cpp
M  +214  -64   src/tests/dolphinquerytest.cpp
A  +124  -0    src/tests/dolphinsearchbartest.cpp     [License: GPL(v2.0+)]
D  +0    -63   src/tests/dolphinsearchboxtest.cpp

https://invent.kde.org/system/dolphin/-/commit/4102ccb80457eea44ea280f0ace2a419602bc34b