Fuzzy search does not match simple substrings. #86274

Closed
opened 2021-03-04 16:16:48 +01:00 by Will · 6 comments

System Information
Operating system: Linux
Graphics card: Intel

Blender Version
Broken: 2.91, 2.92 (Possibly since https://developer.blender.org/D8825)
Worked: 2.90

Short description of error

Searching for properties used to match all available names that contained the search term.

For example, searching "head", "character", or "model" would match "SomeCharacterModelHead".

As of Blender 2.91, it longer does this.

Personally, I find the current behaviour much less predictable, and thus much less useful. I can notice typos and fix them if necessary, but I can't always recall the entirety of a multiple-part name if the fuzzy search doesn't return it right away.

The main advertised benefit of a fuzzy search is that it can search from misspellings and typos. But since the artist's the one who usually named the objects in the scene, and since they can easily correct typos anyway, this benefit is of questionable use.

And in order to try to accommodate easily correctable user errors, we now not only get a large number of false positives, but we've also broken searching for correct spellings that IMO totally should work.

This has actually been a pretty major usability regression for me, especially since the unique parts of my objects' names tend to be at the end or in the middle of their names, where fuzzy search nearly always fails. That means that I have to search from the start of the name, which is usually the most generic part and thus returns half of the objects in the entire scene as false positives, which in turn means that I end up having to remember the exact name of the object, thus completely negating the "fuzzy" part of "fuzzy search".

It's easier to fix a typo than it is to sort through a long list of false positives or remember the exact name of an object when fuzzy search inevitably fails for a simple substring search term.

2.90, searching "head" returns "SomeCharacterModelHead", as expected:

image.png

2.91 and 2.92, searching "head" does not return "SomeCharacterModelHead". "Character" and "model" don't either, which means that the only viable search terms are the ones beginning with "Some"— Which, even without the mess returned by fuzzy search, would already likely return the largest number of false positives:

image.png

IMO predictability is important to usability, and using an opaque algorithm hurts that. If we can't predict how the search algorithm is going to behave, and if it fails to behave as expected with simple and entirely reasonable search terms, then we cannot quickly derive search terms to find the property we want.

Exact steps for others to reproduce the error

Search for nearly any substring of any property's name, or search for "head", "model", or "character" in .objects["Cube"].modifiers["SearchHere"].object in the attached file:

FuzzySearchSubstring.blend

**System Information** Operating system: Linux Graphics card: Intel **Blender Version** Broken: 2.91, 2.92 (Possibly since https://developer.blender.org/D8825) Worked: 2.90 **Short description of error** Searching for properties used to match all available names that contained the search term. For example, searching "head", "character", or "model" would match "SomeCharacterModelHead". As of Blender 2.91, it longer does this. Personally, I find the current behaviour much less predictable, and thus much less useful. I can notice typos and fix them if necessary, but I can't always recall the entirety of a multiple-part name if the fuzzy search doesn't return it right away. The main advertised benefit of a fuzzy search is that it can search from misspellings and typos. But since the artist's the one who usually named the objects in the scene, and since they can easily correct typos anyway, this benefit is of questionable use. And in order to try to accommodate easily correctable user errors, we now not only get a large number of false positives, but we've also broken searching for *correct* spellings that IMO totally should work. This has actually been a pretty major usability regression for me, especially since the unique parts of my objects' names tend to be at the end or in the middle of their names, where fuzzy search nearly always fails. That means that I have to search from the start of the name, which is usually the most generic part and thus returns half of the objects in the entire scene as false positives, which in turn means that I end up having to remember the exact name of the object, thus completely negating the "fuzzy" part of "fuzzy search". __It's easier to fix a typo than it is to sort through a long list of false positives or remember the exact name of an object when fuzzy search inevitably fails for a simple substring search term.__ 2.90, searching "head" returns "SomeCharacterModelHead", as expected: ![image.png](https://archive.blender.org/developer/F9866128/image.png) 2.91 and 2.92, searching "head" does not return "SomeCharacterModelHead". "Character" and "model" don't either, which means that the only viable search terms are the ones beginning with "Some"— Which, even without the mess returned by fuzzy search, would already likely return the largest number of false positives: ![image.png](https://archive.blender.org/developer/F9866134/image.png) IMO predictability is important to usability, and using an opaque algorithm hurts that. If we can't predict how the search algorithm is going to behave, and if it fails to behave as expected with simple and entirely reasonable search terms, then we cannot quickly derive search terms to find the property we want. **Exact steps for others to reproduce the error** Search for nearly any substring of any property's name, or search for "head", "model", or "character" in `.objects["Cube"].modifiers["SearchHere"].object` in the attached file: [FuzzySearchSubstring.blend](https://archive.blender.org/developer/F9866177/FuzzySearchSubstring.blend)
Author

Added subscriber: @WCN

Added subscriber: @WCN
Member

Added subscribers: @JacquesLucke, @filedescriptor

Added subscribers: @JacquesLucke, @filedescriptor
Member

Changed status from 'Needs Triage' to: 'Confirmed'

Changed status from 'Needs Triage' to: 'Confirmed'
Member

I can confirm this on the 2.92.0 release, but not in the latest master. I think 116cda65a might be the commit that fixed this. @JacquesLucke Do you know the commit(s) that resolved this? They should probably be added to #85958.

I can confirm this on the 2.92.0 release, but not in the latest master. I think 116cda65a might be the commit that fixed this. @JacquesLucke Do you know the commit(s) that resolved this? They should probably be added to #85958.
Member

Changed status from 'Confirmed' to: 'Resolved'

Changed status from 'Confirmed' to: 'Resolved'
Jacques Lucke self-assigned this 2021-03-08 12:00:57 +01:00
Member

I think this was probably broken by 2a24b3aaf4 and was fixed by the recent introduction of fuzzy search in this input field. Not sure if 116cda65a2 can be considered for the corrective release, because it's not just a bug fix. You can add it as a candidate though.
I'm closing this, because it is fixed in master.

I think this was probably broken by 2a24b3aaf4 and was fixed by the recent introduction of fuzzy search in this input field. Not sure if 116cda65a2 can be considered for the corrective release, because it's not just a bug fix. You can add it as a candidate though. I'm closing this, because it is fixed in master.
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#86274
No description provided.