go-shiori / shiori

Simple bookmark manager built with Go
MIT License
9.16k stars 545 forks source link

Search API Fails to Return Results for Multi-Keyword Queries #899

Open DesarrolloAntonio opened 3 months ago

DesarrolloAntonio commented 3 months ago

Data

Shiori version: 1.6.3

Describe the bug / actual behavior

When performing a search on the API with a single keyword, results are returned as expected. However, adding a second keyword results in an empty response list.

Expected behavior

I expect the search to return results that match both keywords.

To Reproduce

1 - I have a bookmark with this value, title":"Kotlin Design Patterns: Observer Explained | ProAndroidDev" 2 - With this endpoint (http://192.168.1.26:18080/api/bookmarks?page=1&keyword=kotlin) returns the correct elements 3 - With this endpoint (http://192.168.1.26:18080/api/bookmarks?page=1&keyword=kotlin%20Design) returns an empty list

Monirzadeh commented 3 months ago

just for add more data after a quick test: search can't return Kotlin De but return result for this Kotlin Design :thinking:

DesarrolloAntonio commented 3 months ago

just for add more data after a quick test: search can't return Kotlin De but return result for this Kotlin Design 🤔

With "kotlin Design" works

Monirzadeh commented 3 months ago

just for add more data after a quick test: search can't return Kotlin De but return result for this Kotlin Design 🤔

With "kotlin Design" works

we change the logic of search a little in #721. as i remember searching is case insensitive so it return the result. maybe this need improvement but first we should solve current issue. @fmartingr you work on that part of code more than me. do you have any idea? somehow it just search for text that separate with space..

fmartingr commented 3 months ago

As with a lot of other things, searching needs to be revisited at some point. I have been tempted to use bleve but that would make twice the storage for the same amount of bookmarks. Each database engine would need to have it's own Search method with SearchOptions passed from the query. I will fill in a proper issue when I sit down and think about it, there's just too many things to work on 😓