I want to self-host a search engine that indexes my static website(s).
I don’t want to use a CMS (which typically have a search engine built-in) for these sites, and I don’t want to refer my visitors to a third-party search engine service.
It doesn’t have to be a user-friendly search engine (like Google, Bing, etc.), it’s mostly for power users, so a complex search syntax may be required.
Requirements
Formalities:
The search engine must be FLOSS.
It must run on a GNU/Linux server.
It must not use Java (I know there are several good search engine projects in Java, but, unfortunately, my host doesn’t support it).
Backend:
The search engine must index (X)HTML5. Support for other formats is not needed.
I don’t want the crawler to find my pages on its own. Instead, I want to provide a list of URLs which should be crawled (ideally supporting one of the sitemaps.org formats).
I don’t want to add metadata about the documents somewhere else than in the documents themselves.
Frontend:
- The search engine must not require JavaScript (except for optional features).
- It must not set cookies (unless the user explicitly submits a settings form or similar).
My wish list
Indexing: In addition to the full text, it should index as many signals as possible (e.g., in the form of name-value pairs), like meta tags, RDFa/JSON-LD, semantic elements, etc.
SERP: I want to be able to define how the results should look like, depending on the indexed data. Similar to Google’s Rich Snippets. For example: show an image, a list, a short table, etc.
Ranking: I’d like to be able to tweak the ranking algorithm, e.g., giving each field a certain score/priority.
Search operators: It should, at least, support the Boolean
AND
/OR
/NOT
and brackets (e.g.,(laptop OR notebook) (review OR reviews) -netbook
). The more operators, the better (phrase/range/proximity search; field-based search; special characters, case-sensitivity; etc.).