View Issue Details

IDProjectCategoryView StatusLast Update
0005715MMW v4Playlist / Searchpublic2009-06-05 09:56
Reporterrusty Assigned To 
PriorityurgentSeveritytweakReproducibilityalways
Status newResolutionopen 
Product Version3.1 
Summary0005715: Search Dialog: Search 'Any Text Field' yields too many results for quoted text
DescriptionIf the user enters <Artist> <Album> in the Basic (or Advanced) Search Dialog's 'Any Text Field', MM returns results containing <Artist> and <Album>.

If the user enters "<Artist> <Album>", MM returns the same results!

e.g.
Search for: U2 Boy
--> results are returned for all tracks on that album

Search for: "U2 Boy"
--> similar set of results are returned even though no single field contains "U2 Boy" (Artist=U2 and Album=Boy).

Note: aside from the bug, it's even stranger that the result set for the above 2 searches is not identical. The search for "U2 Boy" is different in the sense that it excludes all unrated tracks ?!
Additional InformationReported at: http://www.mediamonkey.com/forum/viewtopic.php?f=6&t=39990
TagsNo tags attached.
Fixed in build

Activities

Ludek

2009-06-05 09:55

developer   ~0018167

Last edited: 2009-06-05 09:56

I reviewed the reasons for this and I must say that the fix isn't trivial and that I would rather defer beyond to 3.1 in order to prevent from introducing regressions.

Technical reasons:
If you search via searchbar e.g. for "4 Hero Two Pages" then there are two layers:

The 1st layer is the SQL part for SQLite's FTS3 engine in the form:
SELECT Songs.* FROM Songs WHERE Songs.ID IN (SELECT rowid FROM SongsText WHERE SongsText MATCH ' "4 Hero Two Pages" '

The 2nd layer is our own and this layer is responsible for filtering the results based on the selected fields in Options|Search panel and some other things. One of the other things is, that it filters the results in this case when the phrase is quoted.

So when user search via search dialog (basic or advanced) then the 'Any text Field:' condition uses only the 1st layer and therefore the results are different in this case.