F-Droid Client search feature is broken

Why not simply switch the default search to using the sort by name option instead of sort by “freshness”? That is a very easy change that would improve things greatly.

If you guys are interested in accepting that idea I would be more than willing to change the few lines of code necessary to make that happen and submit it as an MR.

1 Like

I agree with sorenstoutner. Change the search defaults so it at least finds the apps that match the search term by their name first then apps with similar words in their app description second

1 Like

BTW, dvckdvkgo is burying “privacy browser” IDK how far down, and mogeek has your site on bottom of page 2, for me… (and they continue regularly giving plain 403 errors for searches with Tor).

1 Like

Neither of those surprise me. There is a huge difference in searching the general web for Privacy Browser and searching an app repository that contains an app named Privacy Browser for that exact phrase. Although I expect that over time, as Privacy Browser increases in popularity, that problem will take care of itself.

Regarding Tor, it does not surprise me that parts of the internet are inaccessible through their network. My own website blocks some Tor traffic because hacking attempts have come from those IP addresses:


https://iplists.firehol.org/ is also a great source of many other lists, they all work with pfBlockerNG too.

1 Like

I think I found the problem. Search the f-droid app for ‘hackers keyboard’. The app reports ‘No Matching Applications Available’.

So now search the web f-droid for hackers keyboard and there it is in the search results.
It is at f-droid.org/en/packages/org.pocketworkstation.pckeyboard/

Notice its file name on f-droid is not hackers keyboard it is org.pocketworkstation.pckeyboard.

So now use the f-droid app to search for pckeyboard and voila, there is the hackers keyboard in the search results

So now Privacy Browser on the f-droid web is at f-droid.org/en/packages/com.stoutner.privacybrowser.standard/

So search the f-droid app for privacybrowser as one word and voila again there it is in the app at the top of the list lol.

The f-droid app is using the app filenames as its search database and not the regular app titles.

IIRC, it uses app name, description and package name. It doesn’t ignore app name, but the reason you get no result here is because it’s “hacker’s keyboard”, not “hackers keyboard”. The word “hackers” is nowhere to be found, so it doesn’t match.

1 Like

That’s a hell of an attitude for someone who is clearly wrong.

But okay, here is the proof: the word “hackers” is not on that page:

Which is why F-Droid won’t find it with “hackers”:

But will with “hacker’s”:

Given how the word “hacker’s” is only in the title and not in the description or package name, the F-Droid app must be searching the titles too:


Oh please. You think I cant see you edited your comment? You originally said the app is not called hackers keyboard anymore.

I find it very interesting you claim you can see I edited my comment, as I haven’t. If I did, there would’ve been a pencil icon and you could see exactly what I edited.

I don’t understand why you need to have such an attitude, telling me I’m posting “low-effort bullshit” and when I prove you wrong claim I edited my post while everyone can see I didn’t and claiming I said something everyone can verify I didn’t. Just admit you made a mistake? Everyone is wrong sometimes, there’s no shame in that. Hell, I am wrong often enough myself. Attacking people like you’re doing though is not cool.

Anyway, let’s get back on topic, shall we?


For what it is worth, edits in a short time frame after post will not result in the edit symbol or history.

But yes, please let’s be friendly y’all.

1 Like

I agree that this should be discussed without resorting to personal attacks.

So far, in this thread, I have yet to see an example where the default search results in the app are better than the search results when sorted by name. And there are several examples where the search results by name are demonstrably better. Is there any reason why the search by name shouldn’t be the default?


AFAICT, the search is based on SQLite’s “like” function along with some extra fields (name, description) in the app description. In reading through dbhelper it’s clear that we could use FTS5 to greatly improve search results. One option could be to load the metadata.json into SQLite via the json1 extension, and then use the FTS5 engine against that table.

We’ve recreated the six year discussion in #336 in this thread.

I’m willing to contract someone to implement FTS5 in the client because clearly the community needs it and the current state annoys the crap out of me when trying to find apps on device. My java is rusty and I don’t have time to write the code. If anyone wants to take a crack at it, dm me. If not, upwork exists for this reason. The end of the contract is an accepted MR on gitlab.

1 Like

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.

Can we expect a better search in fdroid like is is any exect word in written the actual app moat times shows in 3or 2apps down and if you make a spelling mistake then you can’t even find the app.

1 Like

Interesting discussion. I switched to Foxy Droid a few years ago, its search returned much more relevant results than the official client at the time. Haven’t used the F-Droid app since.

@human Am I on shrooms or did you just throw a bunch of words together?!

1 Like

Stay kind. English probably isn’t humans mother tongue.
I think I understood what was meant. Yes it wasn’t easy. But doable.

English probably isn’t humans mother tongue.

A little insulting if not true.

Stay kind.

Plz Lower the bar to the (excessive, IMO) management-specified level:

Be civil. Don’t post anything that a reasonable person would consider offensive, abusive, or hate speech. (See FAQ - F-Droid Forum )

Maybe human was just careless. Or experimenting with alpha quality text obfuscating software. A polite reminder their statement made no sense is perfectly acceptable, IMO.

I have implemented sort by score like this:

create view app_search as
(select id, PACKAGE_NAME, PACKAGE_NAME search, 1000 score from app) union
(select id, PACKAGE_NAME, SEARCH_NAME search, 1000 score from app) union
(select id, PACKAGE_NAME, SEARCH_SUMMARY search, 100 score from app) union
(select id, PACKAGE_NAME, SEARCH_Whats_New search, 10 score from app) union
(select id, PACKAGE_NAME, SEARCH_Category search, 50 score from app) union
(select id, PACKAGE_NAME, SEARCH_DESCRIPTION search, 1 score from app)

-- example search for "photo"
    sum(score) score
where search like '%photo%'
group by id, PACKAGE_NAME
order by sum(score) desc, PACKAGE_NAME;

this way finding in the app-name or app-packagename has a higher score that app-summary or app-description and is therefore listed at the beginning.


   ID  PACKAGE_NAME                              SCORE
------  ----------------------------------------  -----
542721  site.leos.apps.lespas                      1111
534739  com.fediphoto                              1101
534789  com.fediphoto.lineage                      1101
557365  de.bahnhoefe.deutschlands.bahnhofsfotos    1101
554641  dev.leonlatsch.photok                      1101
554581  fr.s13d.photobackup                        1100
554602  unisiegen.photographers.activity           1100
564700  org.stingle.photos                         1011
554599  la.daube.photochiotte                      1001
519140  name.gdr.acastus_photon                    1001
560273  com.gtp.showapicturetoyourfriend           1000
554645  com.ruesga.android.wallpapers.photophase   1000
554568  de.onyxbits.photobookmark                  1000
529362  com.tnibler.cryptocam                       111
555016  org.piwigo.android                          111
561794  com.simplemobiletools.camera                101
562105  com.simplemobiletools.gallery.pro           101
556243  com.tistory.deque.previewmaker              101
518970  de.k3b.android.androFotoFinder              101
543576  de.k3b.android.lossless_jpg_crop            101
564038  fr.nuage.souvenirs                          101
565708  jp.muo.syncmemories                         101
534999  me.murks.filmchecker                        101
532822  me.rosuh.easywatermark                      101
524765  org.proninyaroslav.blink_comparison         101
550900  org.witness.sscphase1                       101
539876  click.dummer.imagesms                       100
526608  com.dozingcatsoftware.cameratimer           100
570631  com.dozingcatsoftware.vectorcamera          100
536425  com.flipcamera                              100
562332  com.gmail.mugcuposup.android                100
520837  com.isanexusdev.androidcpg                  100
527611  com.nathanosman.chronosnap                  100
528181  com.nauj27.android.colorpicker              100
567548  com.thibaudperso.sonycamera                 100
533166  com.weatherlight.elloshare                  100
564771  de.digisocken.stop_o_moto                   100
544486  de.hu_berlin.informatik.spws2014.mapever    100
535409  de.repat.mosf                               100
520396  eu.domob.anacam                             100
535097  eu.faircode.finegeotag                      100
528194  eu.quelltext.coloring                       100
537750  fr.mobdev.goblim                            100
526546  fr.tvbarthel.apps.cameracolorpicker         100
560382  mobi.omegacentauri.SendReduced              100
520560  org.quovadit.apps.andof                     100
563413  wb.receiptspro                              100
539823  com.germainz.identiconizer                   11
535459  com.ultramegasoft.flavordex2                 11
537017  de.hauke_stieler.geonotes                    11
538256  me.anon.grow                                 10
547437  uk.co.richyhbm.monochromatic                 10
528290  ac.robinson.mediaphone                        1
518574  cf.fridays.fff_info                           1
528999  ch.admin.bag.covidcertificate.verifier        1
557098  com.asdoi.quicktiles                          1
527330  com.cheogram.android                          1
533916  com.exifthumbnailadder.app                    1
568805  com.genonbeta.TrebleShot                      1
538071  com.graphhopper.maps                          1
532873  com.hos_dvk.easyphone.full                    1
541503  com.infomaniak.drive                          1
547714  com.jairaj.janglegmail.motioneye              1
555223  com.m3sv.plainupnp                            1
537937  com.mendhak.gpslogger                         1
572809  com.nathaniel.motus.cavevin                   1
536473  com.pitchedapps.frost                         1
560265  com.securefilemanager.app                     1
572017  com.tobykurien.webapps                        1
533381  com.vishnuraghav.EnRecipes                    1
571511  de.cyberit.wasgeht                            1
552507  de.dennisguse.opentracks                      1
558005  de.digisocken.reotwe                          1
526559  de.k3b.android.camerafolder                   1
561302  de.k3b.android.geo2articlesmap                1
548833  de.msal.muzei.nationalgeographic              1
554661  de.rwth_aachen.phyphox                        1
560965  dev.marchello.sharik                          1
536552  eu.quelltext.mundraub                         1
553073  io.oversec.one                                1
568827  io.treehouses.remote                          1
563063  me.ccrama.redditslide                         1
526943  me.hackerchick.catima                         1
530198  me.thanel.dank                                1
529596  net.cyclestreets                              1
556552  net.guildem.publicip                          1
552886  net.osmand.plus                               1
532805  net.schueller.instarepost                     1
535871  org.forkgram.messenger                        1
540843  org.jellyfin.mobile                           1
541982  org.kontalk                                   1
536244  org.liberty.android.freeotpplus               1
550066  org.noise_planet.noisecapture                 1
533463  re.indigo.epistolaire                         1
565358  superfreeze.tool.android                      1
532185  sushi.hardcore.droidfs                        1
568377  truewatcher.tower                             1
1 Like