<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ollama-web.git/tests/test_search.py, branch main</title>
<subtitle>A lightweight personal Ollama Web UI with web search, PDF attachments, and MCP tools.
</subtitle>
<id>https://git.takashi-2521.com/ollama-web.git/atom?h=main</id>
<link rel='self' href='https://git.takashi-2521.com/ollama-web.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.takashi-2521.com/ollama-web.git/'/>
<updated>2026-10-19T17:03:54+00:00</updated>
<entry>
<title>Improve web search region selection and normalize provider results</title>
<updated>2026-10-19T17:03:54+00:00</updated>
<author>
<name>tanaka takashi</name>
<email>isazaka@gmail.com</email>
</author>
<published>2026-10-19T17:03:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.takashi-2521.com/ollama-web.git/commit/?id=4e9c66ee25ed77858985765382f41d0cf22ea588'/>
<id>urn:sha1:4e9c66ee25ed77858985765382f41d0cf22ea588</id>
<content type='text'>
Update ddgs to 9.16.0 and keep backend="auto" while preserving the
LLM-facing query/max_results inputs and title/href/body result schema.

Implementation:
- Add OLLAMA_WEB_SEARCH_REGION with auto/us-en/jp-jp values, normalized
  configuration input, and a clear startup error for unsupported values.
- In auto mode, detect kana after NFKC normalization and exclusion of URLs
  and site:/filetype: tokens. Select jp-jp for kana and us-en otherwise,
  without modifying the original query or sharing per-call region state.
- Preserve href/url and body/snippet fallbacks and normalize None values.
- Reject malformed HTTP(S) URLs without DNS lookups or extra requests.
- Unwrap known Yahoo redirect URLs before excluding Bing aclick ads.
- Represent missing and URL-only titles as empty strings rather than
  inventing titles from snippets. Preserve remaining provider order and
  allow fewer results after filtering, without additional searches.
- Preserve provider exception propagation and identify ddgs in error logs.

Coverage and documentation:
- Add 72 regression cases for configuration, region routing, concurrency,
  public schemas, title/URL/ad boundaries, limits, and search_and_fetch
  continuation. Update existing provider mocks and log assertions.
- Document the region environment setting and result semantics in both
  READMEs and tools-schema.md; update the changelog.
- Keep only a short backend availability caveat in tools-schema.md and
  remove the temporary backend comparison, design, and validation docs.

Validation:
- pytest: 222 passed; ruff check . and mypy src/ passed.
- uv lock --check and git diff --check passed.
- Initial live acceptance: 56 searches plus 3 registry smoke checks;
  default-region auto succeeded 8/18 times and real ad filtering removed
  two ads. Stable relevance/title quality targets remain unmet because
  provider acquisition is unreliable.
- Follow-up backend study: 234 comparative searches plus 3 Yahoo response
  diagnostics. Yahoo led individual backends at 9/18; restricted multi-
  backend combinations did not outperform the contemporaneous auto
  control. Authentication, access restrictions, temporary upstream
  failures, and Yahoo HTML/parser mismatches were observed.

Do not claim search reliability is fixed or add backend configuration,
custom retries, ranking changes, or challenge bypasses. Running app
processes were not restarted; restart is needed to load the changes.
</content>
</entry>
</feed>
