lunr.js as its search engine. According to its documentation:
At the most basic level, search queries can consist of a single term, like 'hello'. However, they can also include multiple terms, which are joined with an OR operator. For example, the query 'hello world' will retrieve documents containing either 'hello' or 'world', but documents containing both will rank higher.
You can add wildcards to terms to represent one or more unspecified characters. These wildcards can be positioned anywhere within the term and a term can contain more than one wildcard. While this broadens the range of documents found, it can negatively affect query performance, especially when a wildcard is placed at the beginning of a term.
By default, when the end user types a query, HTML Executable immediately starts searching for it (a wildcard is always added to the end of the query entered).
You can limit terms to specific fields. For instance, with 'title:hello', only documents with 'hello' in the title field will match. Using a field that isn't in the index will result in an error.
HTML Executable's search facility supports modifiers for terms, including edit distance and boost. Boosting a term (e.g., 'foo^5') increases the ranking of documents matching that term. Edit distance enables fuzzy matching—for example, 'hello~2' will match documents containing 'hello' within an edit distance of 2. To improve query performance, it's best to avoid large values for edit distance.
Terms can have a presence modifier. By default, the presence of a term in a document is optional, but you can make it required or prohibited. Prefix the term with '+' to require its presence (e.g., '+foo bar' searches for documents that must contain 'foo' and may contain 'bar'). Prefix with '-' to prohibit its presence (e.g., '-foo bar' searches for documents that cannot contain 'foo' but may contain 'bar').
To escape special characters, use the backslash ('\'). This allows you to include characters in searches that would typically be viewed as modifiers. For instance, 'foo\~2' will search for the term "foo~2" instead of trying to apply a boost of 2 to the search term "foo".
When a page from a search result is opened, keywords that were searched for may be highlighted. For PDF documents, keywords are highlighted too.
For advanced programmers, it's perfectly feasible to modify the HTML code and JavaScript scripts that enable the HTML Executable's search engine to function. Indeed, all these HTML and JavaScript resources can be found in the zip file named chromium.zip, which is available in the HTML Executable installation directory, usually located at:
C:\Program Files (x86)\HTML Executable 2023\Resources\Chromium\
The search engine's functionality can also be customized by modifying the JavaScript code found in assets\js\search.js within the Chromium.zip file.
However, it's important to note that only experienced users should attempt these modifications. It's essential to make backups before making any changes to prevent loss of original files or data.
If you get an "out of memory" error while compiling your publication, try to enable the Keep the search index data outside the EXE file option available in Output Format. The error means that you have reached the free memory limit available for 32-bit programs (2 GB). In that case, HTML Executable cannot store your search index in memory, and must store it as a file on the hard disk.