Preflight Search
Preflight search is an ZBSearch feature that allows you to run a preliminary search query that will return just the number of results that match your query.
Preflight search is an ZBSearch feature that allows you to run a preliminary search query that will return just the number of results that match your query. This is useful for determining if a search query will return a large number of results, which can be useful for determining if you should run a full search query and facets (if needed).
Usage
To run a preflight search, you can use the preflight: boolean property when using the search function.
Let's see it in action:
import { create, insert, search } from "zbsearch";
const db = create({
schema: {
title: "string",
},
});
insert(db, { title: "Red headphones" });
insert(db, { title: "Green headphones" });
insert(db, { title: "Blue headphones" });
insert(db, { title: "Yellow headphones" });
const results = search(db, {
term: "headphones",
preflight: true,
});
console.log(results);
// {
// elapsed: {
// raw: 181208,
// formatted: '181μs'
// }
// hits: []
// count: 4
// }The results object will return a standard ZBSearch response, but the hits property will be an empty array.
ZBSearch is extremely fast at searching, and loses a large portion of the elapsed time retrieving documents and assigning them to the final results.hits array.
By using a preflight request, you will be able to retrieve facets and a total number of results in a very fast manner, and then run a full search query if needed.
How is that useful?
Preflight requests are particularly useful in certain situations, like when spawned right before a query with a certain threshold.
For example, let's say you have a large database of 50,000 products. If a user searches for a very rare product, you may end up with just a few results if the threshold is set to 0 (exact match).
By running a preflight search, you will be able to programmatically set a different threshold based on the number of results returned by the preflight search.
Scenarios
- The preflight search returns 3 results. You can set the threshold to
0.5, returning the 3 results + 50% of the fuzzy-matched results. - The preflight search returns 10 results. You can set the threshold to
0.2, returning the 10 results + 20% of the fuzzy-matched results. - The preflight search returns 100 results. You can set the threshold to
0, returning only the 100 exact-matched results.
Read the threshold documentation for more information on how the threshold parameter affects search results.