Back to blog

August 12, 2026

Week 3 Updates: Search improvements & week 4 work

Purili’s third week focused on making ambiguous searches smarter and operations more reliable. Searches such as “Steam” now prioritize the official destination, misleading news spam and duplicate results are filtered more aggressively, and the crawler is adding pages at roughly 900 per second. The index has grown beyond 378 million documents, while search qu

Note: again largely written by AI but it catches the work done quite well. This week I am planning (and have already made) some changes to the news and maps apps.

Purili v2: Week 3 Search Update

Purili's third week on schema v2 focused on a less visible but important part of search quality: making ranking changes reproducible, fixing concrete bad result pages, and rejecting broad retrieval experiments when they harmed the independent regression set.

The web and news index now contains more than 378 million documents. A larger index improves recall, but it also increases the number of duplicate, ambiguous, regional, and low-quality candidates that ranking must separate.

More reliable web results

This week adds several focused result-quality improvements:

  • known software destinations can be resolved explicitly when an ambiguous

word also has a dictionary meaning;

  • steam now opens the official Steam Store, uses the local

Steam (service) knowledge entity, and no longer fills the page with Wikipedia language variants;

  • Wikipedia language hosts are collapsed for official-site and navigation

queries, while informational searches retain relevant language diversity;

  • equal-score Tantivy candidates now use deterministic document and URL

tie-breaks, so restarting the API no longer changes their order arbitrarily;

  • random generated news hosts are rejected, and identical headlines syndicated

across unrelated hosts occupy at most one news position.

Purili also tested broader inflection and alias retrieval for queries that do not exactly match indexed wording. Some individual searches improved, but the 131-query regression gate fell. That experiment was removed rather than shipped.

Comparable search-quality results

The unchanged 500-query benchmark remains deliberately difficult and specialist-heavy.

MetricWeek 2Week 3
Strict judged score100.0 / 100100.0 / 100
Retrieval-health diagnostic77.6 / 10077.7 / 100
Top-10 topical results56.2%56.5%
Fully topical top-10 pages36.2%35.8%
Zero-result queries00
Obvious-spam queries23

The fully topical result fell slightly, so the earlier 60% and 40% goals have not been reached. The automated score is a lexical retrieval-health proxy, not a human relevance grade or NDCG measurement.

The independent 131-query production gate retained:

  • 54.2% top-1
  • 61.8% top-3
  • 78.6% good@3
  • 69.2% lexical precision at 10
  • 0 spam queries and 0 zero-result queries

The final read-only API canary measured 163 ms at p50 and 1,007 ms maximum on that gate. The parallel 500-query run measured 711 ms at p50 and 3,582 ms at p95.

A ranking regression caught before release

The latest crawler had produced a host-quality snapshot for more than 1.6 million hosts. Loading that snapshot reduced the 131-query gate to 52.7% top-1, 60.3% top-3, and 77.1% good@3.

Purili therefore does not use that snapshot for live query-time ranking yet. The crawler continues collecting the data, but it will remain an offline calibration input until it passes both broad and judged evaluations. This prevents a routine API restart from silently changing result quality.

Privacy and operational cleanup

Purili still does not retain ordinary search queries.

Nginx access logging for puri.li is disabled, and client IP forwarding to the frontend is blanked. This week also removed query text from backend parse warnings, removed full URLs from crawler error logs, and stopped result reports from storing the search query or user-agent. Result reports retain only the fields needed to investigate the voluntarily reported result.

Old crawler, PM2, and rotated web-server logs were removed after the audit. Crawler logging now contains operational host-level information instead of full crawl URLs.

Current search coverage

Purili currently searches more than:

  • 378 million web and news documents
  • 40 million books
  • 70 million videos

The previous crawler run completed its configured 10-million-page batch rather than crashing. A new bounded batch has been started from the existing v2 frontier after deployment.

What comes next

Week three confirms that more candidate retrieval is not automatically better retrieval. The next ranking work will use measured, intent-specific channels instead of broad partial matching.

The next priorities are:

  • exceed 60% top-10 topicality on the unchanged 500-query benchmark;
  • exceed 40% fully topical pages without hiding difficult queries;
  • calibrate host-quality signals against pooled human judgments before

enabling them online;

  • improve non-exact wording through intent-specific aliases and authoritative

source retrieval;

  • expand human NDCG@10 and MRR judgments for developer, comparison, gaming,

local, and complex queries;

  • keep interactive p50 latency low while the index continues to grow.

Week three did not produce a dramatic aggregate jump. It did make several bad result pages materially better, prevented a hidden restart regression, reduced privacy-sensitive logging, and made the next ranking experiments more trustworthy.