Problem
In Tools → Search Adlists (Find Domains In Lists), searching for a fully qualified domain with "Use partial matching" enabled returns 0 results, even though the domain is blocked by a list entry such as ||example.com^. Partial matching only checks whether the search text is contained in a list entry. www.example.com is not contained in ||example.com^, so nothing is found. With partial matching disabled, the same search correctly shows the blocking list.
Users can wrongly conclude that a domain is not blocked. Related threads show that this is a recurring point of confusion:
"Query Lists" - No results found for blocked domain (Feb 2020)
Blocked (gravity) but domain isn't on any list (Mar 2025)
Domain blocked by gravity, but not in a list? (May 2025)
Suggestion
Clarify the checkbox help text, e.g.: "Use partial matching: lists all entries that contain your search text. To check whether a specific domain is blocked, leave this off."
On 0 results in partial mode, show a hint: "No list entry contains this text. This does not mean the domain is allowed, because entries like ||example.com^ also cover subdomains. To check whether this domain is blocked, search again without partial matching." Ideally with a "Search exactly" button.
The CLI already prints a hint from exact search to partial search when nothing is found ("Try partial matching with > pihole -q --partial …"). The reverse hint for the web UI is missing.
Verified on Core version is v6.4.3 (Latest: v6.4.3)
Web version is v6.6 (Latest: v6.6)
FTL version is v6.7 (Latest: v6.7.1)
Reproduction (Pi-hole Web, Tools → Search Adlists), searching for www.mietpreisexplosion-stoppen.ch:
With "Use partial matching" enabled:
Found 0 domains partially matching 'www.mietpreisexplosion-stoppen.ch'.
Found 0 lists partially matching 'www.mietpreisexplosion-stoppen.ch'.
Number of results per type:
- 0 exact domain matches
- 0 regex domain matches
- 0 allowlist (antigravity) matches
- 0 blocklist (gravity) matches
With "Use partial matching" disabled:
Found 0 domains exactly matching 'www.mietpreisexplosion-stoppen.ch'.
Found 1 list exactly matching 'www.mietpreisexplosion-stoppen.ch':
No. The search is processed by FTL and returned by the API. The web interface only shows what is returned.
As explained above, the issue is:
the search can't find a partial match to the www.example.com string in the database because this string is not there, only example.com is there (in ||example.com^). Then the search returns zero matches, which is different than expected.
The suggested solution (to add additional message/hint to the partial search results) only requires changes on the web interface code, but it doesn't actually change how the partial search works.
I'm thinking if it's possible to change how FTL execute the partial match search to return the correct list, in cases like this.
Exact matching already works for ABP-domains. But I see that exact matching is expected to be a subset of partial matches (the larger set). Fix tracked here:
P.S.: The current behavior is documented, but I see that it may not be the expected behavior, the API documentation (search.yaml) said:
ABP matches are not returned when partial matching is requested