PriEco Quality Benchmarking

Intro

Hi! Some of you may know PriEco and you may know the results aren’t the best yet. I’m committed to improve it as much as I can. I’ve decided to document it here. Hopefully I am allowed to, will provide a coherent source of information, show some transparency on my side and we could have discussions.

Why here? Because of community and I like Privacy Guides. I could do it on X/Mastodon/Bsky or on own blog (that would be first post) but I don’t have trust that people would ready it there.
Please tell me if it’s appreciated here and if not I’ll stop

I still believe the main reason why PriEco lacks behind is index size. It’s just too small compared to more established web search engines

Index size

Google (40-50B results, 400B known URLs)
doesn’t publicly report it, but we can estimate from sources:
WorldWideWebSize estimates Google at roughly 40-50B pages (Bing at 1-3B, I find it hard to believe as both Mojeek and Brave search report much higher numbers)
I’d say that general agreed upon numbers online are ~50B results and 400B known URLs
But there are claims as 8B (Maybe they mean domains)

Bing (8-14B)
SEJournal
IndexMachine
Again, it’s just estimation

Brave search (8B+)

Source
Here we can estimate Brave search is roughly Bing size as it was 8B over 5y ago. I believe we can all agree Brave search got a lot better compared to how it was 5y ago.

Mojeek (9B)
Mojeek is pretty transparent about this. They replied to me and in 2025 they reached 9B (it’s in their timeline)

That said, there is a meaningful distinction about how many URLs (web pages) a web search engine knows about crawling and actually stores and serves as results indexing.
I personally have 0 care for now about how many URLs PriEco knows about but! for the sake of this post I ran a script: 2.1B. I care only about how many results it can deliver to you: LIVE STATS (need to improve that page design)

While writing this I stumbled across :smiling_face_with_tear:

Just so you know. That was likely version 1 of my crawler. Now it’s at version 3 and the reason was that the before versions produced unusable results. PriEco crawls the web only for a few months and only recently with a reasonable speed

PriEco (350M results, 2.1B known URLs)
I already mentioned the information but for people scanning through this
Again the known URLs is irrelevant information for me, the results count is LIVE

Ranking

This information is even more hidden. PriEco does:

  1. Concurrent full-text search (keyword matching) and IVF vector search (semantic understanding)
  2. RRF merge & deduplication: merges both indexes to 1 list of results
  3. Hand ranking: A set of hand-picked rules that boost or hurt result score
    1. Examples are: SSL, loading time, if the page is in user set lang/loc, bad url patterns, measured confidence and effort of the page, if the page is homepage…
    2. I made up each signal weight. I am now looking to do a Google & Brave search query log optimization to improve it
  4. Reranker model + PageRank
  5. Cap SERP (search engine result page) to max 3 results from a single domain

Online is a lot more information about how to do ranking and I’m looking to ways to include in my ranking pipeline to improve results quality.
Right now it’s about putting some logic behind hand ranking weights

Tests

Product becomes what you optimize it for. We need a proper “Gold standard” or a measurable metric we optimize PriEco against so that we can reliably measure if it’s getting better. We could measure against Google like so many before me did.

NDCG (AI helped, don’t yet have a proper test) I took 50 Google, Brave search, Mojeek and PriEco SERPs of the same query
Sample of the queries:

  • simple: youtube, netflix sign in, wikipedia english main page
  • products: best video editing software 2026, best wireless earbuds for working out
  • questions: difference between ssd and hdd sequential read write speeds or why does rust borrow checker reject mutable references in loops

The questions and test code was AI made for now
These are results:
Google (Measured against) 1.0000
Brave Search Score: 0.5599
Mojeek Score: 0.2932
PriEco Score: 0.0856

We can clearly see PriEco scored the worst. BUT! It’s workable, considering even index size compared to Mojeek is 30 times smaller and PriEco ranking isn’t yet very smart

That said, likely the test wasn’t entire optimal. It contained a lot of long queries. But it’s good to compare how PriEco scores on it compared to Brave search and Mojeek, which in my view makes the score pretty reasonable

Final words

First of all it isn’t yet done. I just wrote this to communicate current state of PriEco. I will keep this post updated as I improve the ranking, run more tests and grow the index.

Excited for any of your replies to this topic

6 Likes

Would having user feedback, e.g. asking how the results were, be something that could help with this?

4 Likes

Hi! Sorry, I wrote this 3 days ago and only now, for me roughly at midnight it got approved

It could, but not sure if I can get enough user input for it to be meaningful
But I can add it, maybe I’m wrong and it would be amazing

For now, I tried doing at a small scale what the 1st test measured. I took a few dozens Google queries and ordered results, and then ran an algorithm on it so that it tried matching Google as much as possible. I got it from 0.0856 → 0.1079 score, which is a meaningful improvement

Most requested addition to PriEco is a user URL/domain submission or crawling on their part itself. I’m now bringing the submission to PriEco. As adding the exact pages users want should improve the quality the most

3 Likes

Helou! Sorry guys for not updating it here for so long. The reason is truly that I wasn’t working on ranking, but don’t worry as I’m working on PriEco daily and did other things
Now the rest is becoming good enough, and I’d like to really improve ranking. I just want to make PriEco very usable if not even an excellent web search engine
I’m looking into how I want to design the ranking to maximize resulted quality

I’m trying to be creative too, and my newest addition is an addition to PriEco Web Discovery project. PriEco website itself now participates too. When you search for something in PriEco, PriEco checks if it has root possible domains in its index and if not pings those domains. If they return 200 code (they are live) PriEco shows placeholder results


and sends the domains to crawler priority queue

1 Like

I’m thinking something with a Google idea in mind. Google is obviously secretive but they do talk a bit about it + there are so many other resources


I’m now learning about each point and will try to integrate all of them in PriEco to the best of my abilities. My goal isn’t to copy Google but to learn and discover the ideas they use! I’ll keep on updating it here as I implement it all

5 Likes

Just tested a search and it did not give relevant results, while Brave gave the ideal result.

“Njalla TOS” was the search term

1 Like

Hi! Yes, PriEco is so much smaller web search engine than Brave. I’m improving it as fast as I can, but I need a bit more time

I’m sorry I couldn’t meet your expectations, hopefully I can soon

I created this post to document how I’m improving ranking, to be transparent about it, get feedback (like yours) and discuss changes

2 Likes

Helou! There is a lot of work being done on PriEco these days. I’m trying to polish it all up, speed it up, improve Recall…

I think enough has happened to update you again

1st Spell checker


This is still a work in progress to improve accuracy and support more languages, but it could be helpful
It’s a part of the effort to understand the meaning of your queries
Question: As PriEco trusts you, it searches for what you typed and only suggests “Did you mean…”. Other search engines spell correct your query, and you have to click on “Search instead for…”

image
I certainly won’t be doing this until the spell checker is solid, but would you like it this way?

2nd Migrating databases
Current index is pretty bad, it’s slow and takes up a lot of storage. But the idea is right. It’s my effort right now to improve it. I’ve finally found likely an amazing database I could store it in. I’ve already migrated results metadata (titles, descriptions, urls…) to this new database. Not only it shrunk this part of index 234GB → 158GB, but it’s at least twice as fast.
At this moment it’s migrating the largest part of the index. It is 809GB large, will see where it gets

Future

The next goal is a keyword matching part of the index. Besides speeding it up I’ll be adding language, location, and date. Know that date isn’t yet most reliable in PriEco, because PriEco is now solely growing the index, not updating and rarely PriEco manages to visit a web page during the same day it was published, but it could be still useful

While I will be improving this part of the index I’m thinking about adding support for this Brave search/Kagi feature


As Brave search Googles are open source, I could just support their syntax and their ones would automatically work in PriEco too

Just know that PriEco is improving crazy fast, and I have trust that soon it is going to be very usable web search engine

5 Likes

New update just dropped. The point was getting down Meaning of query. Here it is explained:

Index

Most of it has been migrated. PriEco now should be much faster. I apologize for how unbearably slow it has been. It is still not Google level fast, but I think it’s very much usable now

Language

PriEco now handles languages much more gracefully and general behavior tries to only show results in user preferred language. I think it really did a big relevancy increment.

And now Google’s Key Search signals. I’m going 1 by 1, so I started and mostly finished MEANING

Meaning

1st step was the Spell checker, this still would greatly benefit from

Spell checker

It is already available in PriEco, but it needs to be much more accurate and support every language that PriEco supports.

It needs to consider user’s language preference, common QWERTY keyboard misclicks, understand the entire query to better infer its meaning and be aware of brand names to avoid correcting them.

so this isn’t yet finalized. But now that we have correctly spelled query, new additions are:

Synonyms

Before scanning the index PriEco analyzes your query and adds synonyms to it internally. This allows PriEco to capture larger width of results that might mean the same thing but used a synonym to what you searched for

PriEco supports this feature for 21 languages

Intent classification

This is a big one. Google and so PriEco too supports:

pub enum QueryIntent {
Informational, // Learn information
Transactional, // Action purchase, download, sign up
CommercialInvestigation, // Research, comparing options
Navigational, // Reach a known domain, page
Local, // Near me businesses
Unknown, // Failed to determine
}

PriEco classifies your query intent and behaves accordingly. For example:

  • Navigational queries don’t filter by preferred language (as the 1st point in this comment), just boost results in said language. As user can have set any language, but searching for YouTube shouldn’t care about the preferred language. YouTube is likely flagged as English result. If we hard filtered here the domain wouldn’t show up in the results
  • Local queries hard filter by location to at least show you results from your country. Being more specific by city… isn’t yet possible
  • Other intents just do for now: if a result matches the intent, it just gets a ranking boost

To finalize Meaning pillar we have

Entities

I’ve got a big data set of people’s first and last names, companies and all cities, towns, and villages from OpenStreetMaps. So that PriEco doesn’t correct them in the spell checker. It’s also used to refine query intent and for places get their coordinates to later show a map widget in normal web search

1st pillar is standing!
I’d say I’m now missing search suggestions


before moving to another ranking pillar

Also, what would you say? I find PriEco sooo much more usable now, I am able to ask it questions and it very often has answers
About search latency: simple queries should be comfortably under 1s. But if you give PriEco a question, at this moment it takes 3-5s, I wasn’t able to optimize it further. But it seems pretty solid with answers

2 Likes

It was the most requested feature!

and a pain to make it work

PriEco has now integrated Brave search Goggles!

You can find PriEco store here and add there your own Goggles. I’ve pre-added all Brave search ones. PriEco caches the Goggles, but they must stay online (open source) to appear in the store. If not in 24h after they go offline PriEco removes them. Unlike Brave search, you can host PriEco Goggles anywhere online, not just on GitHub and GitLab, but you can also there.

PriEco uses Brave search Goggle syntax, so they are cross compatible

Even harder to implement was Quick Tune

Quick Tune shows you how many Goggles you have enabled and gives you a link to the store so you can modify it.

You can raise and downgrade results from domains and even completely block them

If you love your configuration and believe it should be shared with others there is a download button which gives you a sharable file, you can then host.

As you can see here, I’ve blocked the 1st irrelevant domain and now the results are great

It is my effort to give you much more control over the search results and I specifically chose Brave Goggles as a base as they already exist, are open source and relatively simple to plug in. Brave search doesn’t have a simple creator for Goggles. There you need to manually write them. I’ve built on top of it by giving you a download button in the Quick Tune which generates Goggle based on your config automatically (It does generate only from your manual tuning, but you can have multiple Goggles enables which it doesn’t bother to export as they are already live)

API

As of my effort to make this even more of a standard for all web search engines. I do encourage web search engines that rely on PriEco API for web results to use it. Ss they got an option to pass goggles=,… during API call. They are allowed to use only Goggles that are in PriEco Goggle store. This API call automatically uses the passed Goggle(s) configuration for their results too

UI

User interface isn’t yet the best. I wasn’t sure on which emojis/icons to use. Where to place the Quick Tune open button and on more stuff. I’m sure you’re going to tell me how it should look and behave

Bugs

I tried it but I have certainly not ran any advance tests. If you manage to stumble at any bugs. Please comment here or tag me anywhere else

I hope this feature brings you a lot of enjoyment during use of PriEco

I’ll now again go work on the backend, there is a huuuge mistake that hurts results quality

6 Likes

Mobile design is ugly and UX is awful. I couldn’t find Goggles on Brave search on mobile to have it as a reference point. With a little help I found it :skull:

Will improve it based on their design

1 Like

I got a like on this comment. Let’s see again

It got a bit better. ToS;DR is a good source, but still it’s not good enough

But quite weird as PriEco has Njalla indexed

2 Likes

1 Like

Thanks… my fault, sorry, I meant Rerank/Quick Tune. It’s in All search, 3 dots at the top right

I have it now. Will improve it based on their design

My comment comes up :joy:

Someone would be pretty confused searching that and seeing the search engine being tested.

I’ve improved it

3 Likes

A week ago I implemented MEANING in PriEco. Right now I’m working on RELEVANCE

Big part of Relevance is that it connects with meaning. Meaning classifies what the user wants, while Relevance classifies how relevant a result is, to the intent

I’m still just figuring out what everything I could do in this Relevance category

Could I please ask you for feedback on PriEco search results quality?
It would be helpful to know where it stands from an outside perspective

P.S you may experience a bit slower search speed at this moment. It’s doing a lot of server work