<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nox</title>
    <description>The latest articles on DEV Community by Nox (@noxxe21125).</description>
    <link>https://dev.to/noxxe21125</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4042787%2F703a22f9-89d3-46b8-9626-a75227b914f2.png</url>
      <title>DEV Community: Nox</title>
      <link>https://dev.to/noxxe21125</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/noxxe21125"/>
    <language>en</language>
    <item>
      <title>I built a privacy-focused search engine from scratch (and learned why search is hard)</title>
      <dc:creator>Nox</dc:creator>
      <pubDate>Fri, 24 Jul 2026 19:18:20 +0000</pubDate>
      <link>https://dev.to/noxxe21125/i-built-a-privacy-focused-search-engine-from-scratch-and-learned-why-search-is-hard-l0</link>
      <guid>https://dev.to/noxxe21125/i-built-a-privacy-focused-search-engine-from-scratch-and-learned-why-search-is-hard-l0</guid>
      <description>&lt;p&gt;I built &lt;a href="https://slicksearchhq.com" rel="noopener noreferrer"&gt;Slick&lt;/a&gt; because I wanted a search engine that actually felt like it belonged to the user.&lt;/p&gt;

&lt;p&gt;Not another search wrapper.&lt;/p&gt;

&lt;p&gt;Not another app that just sends your query somewhere else.&lt;/p&gt;

&lt;p&gt;A real search engine.&lt;/p&gt;

&lt;p&gt;At first, I thought:&lt;/p&gt;

&lt;p&gt;"How hard could it be?"&lt;/p&gt;

&lt;p&gt;You crawl some websites, put them in an index, add a search box, and you're done... right?&lt;/p&gt;

&lt;p&gt;Turns out, not even close.&lt;/p&gt;

&lt;p&gt;Search is one of those things that looks simple until you try to build it yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is &lt;a href="https://slicksearchhq.com" rel="noopener noreferrer"&gt;Slick&lt;/a&gt;?
&lt;/h2&gt;

&lt;p&gt;Slick is an independent, privacy-focused search engine that I'm building from scratch.&lt;/p&gt;

&lt;p&gt;The goal is simple:&lt;/p&gt;

&lt;p&gt;Give users more control over how they search the web.&lt;/p&gt;

&lt;p&gt;Features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Privacy-focused searching&lt;/li&gt;
&lt;li&gt;Customizable ranking&lt;/li&gt;
&lt;li&gt;Independent web indexing&lt;/li&gt;
&lt;li&gt;Semantic search&lt;/li&gt;
&lt;li&gt;Multiple search providers&lt;/li&gt;
&lt;li&gt;Personalized ranking controls&lt;/li&gt;
&lt;li&gt;A Google-like experience without tracking&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project started as an experiment, but quickly became a deep dive into crawling, information retrieval, machine learning, and infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  The first problem: getting data
&lt;/h2&gt;

&lt;p&gt;A search engine is useless without an index.&lt;/p&gt;

&lt;p&gt;The first major component I built was the crawler.&lt;/p&gt;

&lt;p&gt;It needs to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;discover pages&lt;/li&gt;
&lt;li&gt;download content&lt;/li&gt;
&lt;li&gt;extract useful information&lt;/li&gt;
&lt;li&gt;remove duplicates&lt;/li&gt;
&lt;li&gt;handle dynamic websites&lt;/li&gt;
&lt;li&gt;prepare documents for indexing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal isn't to blindly crawl the entire internet.&lt;/p&gt;

&lt;p&gt;The goal is building a useful, high-quality index.&lt;/p&gt;

&lt;h2&gt;
  
  
  The search engine itself
&lt;/h2&gt;

&lt;p&gt;For indexing, Slick uses Elasticsearch. By default we use DuckDuckGo's index, as Slick is still maturing.&lt;/p&gt;

&lt;p&gt;Each document contains information like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;title&lt;/li&gt;
&lt;li&gt;URL&lt;/li&gt;
&lt;li&gt;description&lt;/li&gt;
&lt;li&gt;page content&lt;/li&gt;
&lt;li&gt;metadata&lt;/li&gt;
&lt;li&gt;keywords&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The initial search system uses traditional information retrieval techniques like BM25.&lt;/p&gt;

&lt;p&gt;But keyword matching has a problem.&lt;/p&gt;

&lt;p&gt;A user doesn't always search using the exact words found on a page.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"how do I stop websites tracking me"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"privacy tools that prevent online surveillance"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;mean almost the same thing.&lt;/p&gt;

&lt;p&gt;A keyword-only search engine sees two different queries.&lt;/p&gt;

&lt;p&gt;Humans don't.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding AI to search
&lt;/h2&gt;

&lt;p&gt;To improve this, Slick uses semantic search.&lt;/p&gt;

&lt;p&gt;Pages and queries can be converted into embeddings that represent meaning instead of just text.&lt;/p&gt;

&lt;p&gt;The ranking pipeline combines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;traditional keyword relevance&lt;/li&gt;
&lt;li&gt;semantic similarity&lt;/li&gt;
&lt;li&gt;reranking models&lt;/li&gt;
&lt;li&gt;quality signals&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The idea is to combine the strengths of old-school search with modern machine learning.&lt;/p&gt;

&lt;h2&gt;
  
  
  The hardest part: ranking
&lt;/h2&gt;

&lt;p&gt;Getting results is easy.&lt;/p&gt;

&lt;p&gt;Getting the right results is hard.&lt;/p&gt;

&lt;p&gt;A search engine can return thousands of pages that technically match a query.&lt;/p&gt;

&lt;p&gt;But users don't want thousands of pages.&lt;/p&gt;

&lt;p&gt;They want the one that answers their question.&lt;/p&gt;

&lt;p&gt;Ranking involves constantly asking:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is this result actually relevant?&lt;/li&gt;
&lt;li&gt;Is this page high quality?&lt;/li&gt;
&lt;li&gt;Does this match the user's intent?&lt;/li&gt;
&lt;li&gt;Should another result be ranked higher?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where most of the engineering effort goes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building it as a solo developer
&lt;/h2&gt;

&lt;p&gt;The biggest surprise was how much infrastructure search requires.&lt;/p&gt;

&lt;p&gt;The UI is honestly the easy part.&lt;/p&gt;

&lt;p&gt;The difficult parts are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;crawling&lt;/li&gt;
&lt;li&gt;indexing&lt;/li&gt;
&lt;li&gt;storage&lt;/li&gt;
&lt;li&gt;ranking&lt;/li&gt;
&lt;li&gt;optimization&lt;/li&gt;
&lt;li&gt;handling bad data&lt;/li&gt;
&lt;li&gt;keeping everything affordable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Large search engines have entire teams dedicated to one small part of this.&lt;/p&gt;

&lt;p&gt;Building even a small one makes you appreciate how much work happens behind every search box.&lt;/p&gt;

&lt;h2&gt;
  
  
  Some things I'm experimenting with
&lt;/h2&gt;

&lt;p&gt;Slick is still actively being developed.&lt;/p&gt;

&lt;p&gt;Some areas I'm working on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;growing the independent index&lt;/li&gt;
&lt;li&gt;improving ranking quality&lt;/li&gt;
&lt;li&gt;better semantic retrieval&lt;/li&gt;
&lt;li&gt;more customization options&lt;/li&gt;
&lt;li&gt;better search categories&lt;/li&gt;
&lt;li&gt;improving crawler reliability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The long-term goal is not to make "another Google clone."&lt;/p&gt;

&lt;p&gt;It's to explore what search looks like when users have more control.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try Slick
&lt;/h2&gt;

&lt;p&gt;If you want to try it:&lt;br&gt;
&lt;a href="https://slicksearchhq.com/" rel="noopener noreferrer"&gt;https://slicksearchhq.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is still early, so any feedback, suggestions, or ideas are greatly appreciated.&lt;/p&gt;

&lt;p&gt;Thanks for checking it out!&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>productivity</category>
      <category>webdev</category>
      <category>searchengine</category>
    </item>
    <item>
      <title>Building a Search Engine Changed How I See the Web</title>
      <dc:creator>Nox</dc:creator>
      <pubDate>Thu, 23 Jul 2026 13:05:00 +0000</pubDate>
      <link>https://dev.to/slicksearchhq/building-a-search-engine-changed-how-i-see-the-web-18on</link>
      <guid>https://dev.to/slicksearchhq/building-a-search-engine-changed-how-i-see-the-web-18on</guid>
      <description>&lt;p&gt;When people use a search engine, they usually only see the final step.&lt;/p&gt;

&lt;p&gt;A search box.&lt;/p&gt;

&lt;p&gt;A query.&lt;/p&gt;

&lt;p&gt;A list of results.&lt;/p&gt;

&lt;p&gt;The complicated parts are hidden behind that interface.&lt;/p&gt;

&lt;p&gt;Once you try to build a search engine yourself, you quickly realize that the internet is not a clean database. It is a constantly changing collection of websites created by millions of different people, companies, and systems.&lt;/p&gt;

&lt;p&gt;Some pages are written to answer questions. Some are created to sell products. Some exist mainly because someone wanted to rank higher in search results.&lt;/p&gt;

&lt;p&gt;A search engine has to figure out the difference.&lt;/p&gt;

&lt;p&gt;That is the problem I started working on while building Slick, an independent search engine focused on customization, privacy, and giving users more control over their search experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  The first challenge is finding the web
&lt;/h2&gt;

&lt;p&gt;Before ranking results, before machine learning, and before semantic search, there is a simpler problem:&lt;/p&gt;

&lt;p&gt;How do you collect the documents?&lt;/p&gt;

&lt;p&gt;A search engine needs its own view of the web. That requires systems that can discover pages, fetch content, process information, remove duplicates, and keep everything updated.&lt;/p&gt;

&lt;p&gt;Crawling sounds simple at first. You request a page, save the content, and move on.&lt;/p&gt;

&lt;p&gt;In reality, the web constantly creates problems.&lt;/p&gt;

&lt;p&gt;Pages disappear.&lt;/p&gt;

&lt;p&gt;Servers block requests.&lt;/p&gt;

&lt;p&gt;Content loads dynamically with JavaScript.&lt;/p&gt;

&lt;p&gt;Multiple URLs can point to almost identical pages.&lt;/p&gt;

&lt;p&gt;Some websites are designed for humans, not machines.&lt;/p&gt;

&lt;p&gt;A crawler is not just downloading pages. It is trying to build a useful representation of the internet.&lt;/p&gt;

&lt;h2&gt;
  
  
  A bigger index does not automatically create better search
&lt;/h2&gt;

&lt;p&gt;One of the easiest mistakes to make is assuming that more documents means better results.&lt;/p&gt;

&lt;p&gt;It does not.&lt;/p&gt;

&lt;p&gt;A search engine can index millions of pages and still provide poor answers.&lt;/p&gt;

&lt;p&gt;The problem is not finding documents. The problem is deciding which ones are worth showing.&lt;/p&gt;

&lt;p&gt;For example, a search for how to configure a Linux server might return:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Official documentation&lt;/li&gt;
&lt;li&gt;A forum post from someone who solved the exact issue&lt;/li&gt;
&lt;li&gt;A copied tutorial&lt;/li&gt;
&lt;li&gt;An outdated blog post&lt;/li&gt;
&lt;li&gt;An SEO page designed to attract traffic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of these pages may contain similar keywords.&lt;/p&gt;

&lt;p&gt;Only some of them are actually useful.&lt;/p&gt;

&lt;p&gt;That is where ranking becomes difficult.&lt;/p&gt;

&lt;h2&gt;
  
  
  Search ranking requires multiple signals
&lt;/h2&gt;

&lt;p&gt;Keyword matching is still one of the most useful tools in search.&lt;/p&gt;

&lt;p&gt;Algorithms like BM25 are extremely effective at finding documents that match a query.&lt;/p&gt;

&lt;p&gt;However, keywords alone do not always understand intent.&lt;/p&gt;

&lt;p&gt;Someone searching for "best privacy browser" might not want pages that repeat those words the most. They may want comparisons, technical discussions, or opinions from people who have actually used different browsers.&lt;/p&gt;

&lt;p&gt;Modern search systems combine many different signals:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Traditional information retrieval&lt;/li&gt;
&lt;li&gt;Semantic search&lt;/li&gt;
&lt;li&gt;Machine learning reranking&lt;/li&gt;
&lt;li&gt;Document quality signals&lt;/li&gt;
&lt;li&gt;User preferences&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each approach solves a different problem.&lt;/p&gt;

&lt;p&gt;There is no single algorithm that understands every type of search.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI makes search more important, not less
&lt;/h2&gt;

&lt;p&gt;There is a common idea that AI will replace search engines.&lt;/p&gt;

&lt;p&gt;The reality is more complicated.&lt;/p&gt;

&lt;p&gt;AI systems are very good at transforming information into answers, but they still depend on finding reliable information first.&lt;/p&gt;

&lt;p&gt;A model can summarize a document, but it does not automatically know if that document is accurate, outdated, or misleading.&lt;/p&gt;

&lt;p&gt;Retrieval is still a fundamental challenge.&lt;/p&gt;

&lt;p&gt;As AI systems become more common, the ability to find high-quality information becomes even more important.&lt;/p&gt;

&lt;h2&gt;
  
  
  Search should give users more control
&lt;/h2&gt;

&lt;p&gt;Traditional search engines usually work in one direction.&lt;/p&gt;

&lt;p&gt;The search engine decides how results are ranked, and users accept the output.&lt;/p&gt;

&lt;p&gt;But different people have different needs.&lt;/p&gt;

&lt;p&gt;A developer looking for documentation wants different results than someone researching a topic. A researcher may prefer academic sources, while someone debugging an issue may prefer forum discussions.&lt;/p&gt;

&lt;p&gt;Search does not have to be identical for everyone.&lt;/p&gt;

&lt;p&gt;Users should have more control over how results are ranked and what sources they prefer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Privacy does not mean removing features
&lt;/h2&gt;

&lt;p&gt;Privacy-focused products often face a difficult balance.&lt;/p&gt;

&lt;p&gt;Collecting more data can improve personalization, but it also creates questions about how that data is stored and used.&lt;/p&gt;

&lt;p&gt;A search engine should be able to provide useful features without requiring users to give up control of their data.&lt;/p&gt;

&lt;p&gt;That is one of the challenges I have been exploring while building Slick.&lt;/p&gt;

&lt;h2&gt;
  
  
  What building search taught me
&lt;/h2&gt;

&lt;p&gt;Building a search engine changed how I think about the internet.&lt;/p&gt;

&lt;p&gt;The web looks organized when you browse it normally.&lt;/p&gt;

&lt;p&gt;But when you try to index it, the complexity becomes obvious.&lt;/p&gt;

&lt;p&gt;Every search result represents many decisions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Should this page be indexed?&lt;/li&gt;
&lt;li&gt;Is it relevant?&lt;/li&gt;
&lt;li&gt;Is it trustworthy?&lt;/li&gt;
&lt;li&gt;Is there a better source?&lt;/li&gt;
&lt;li&gt;Should it rank higher?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The search box is the simplest part.&lt;/p&gt;

&lt;p&gt;Everything behind it is where the real engineering happens.&lt;/p&gt;

&lt;p&gt;Building search is not just about collecting more pages. It is about helping people find useful information in a constantly changing environment.&lt;/p&gt;

&lt;p&gt;That problem is still worth solving.&lt;/p&gt;

</description>
      <category>search</category>
      <category>webdev</category>
      <category>machinelearning</category>
      <category>elasticsearch</category>
    </item>
  </channel>
</rss>
