I want to do an advanced search, something similar to the one in scryfall where I can use either syntax or buttons to search, using multiple filter and logical operators. I have difficulty knowing how to create the SQL query dynamically. If it’s possible I’d like to see a guide on how to do something like that. If there isn’t a guide a high level description on how to do this would be useful.
Useful resources.
Off-the-shelf search engine server:
- OpenSearch aka ElasticSearch
- Toshi
- Apache Solr: an enterprise search server with a powerful REST API
- Sonic: Fast, lightweight & schema-less search backend. An alternative to Elasticsearch that runs on a few MBs of RAM
- Searx
- meilisearch
Libraries to build your own search engine server:
- Bleve & tantivy are search engine projects, respectively written in Golang and Rust, inspired by Apache Lucene and its algorithms (e.g., tf-idf, short for term frequency-inverse document frequency). Such as Lucene, both are libraries to be used for any search project; however they are not ready-to-use APIs.
- Apache Lucene: the full-text search library
If you use Hibernate as your data access layer you can use Hibernate Search
- you need a database to store and index the information.
- you need an API to access the information.
There are a million ways you could do this; pretty much any database will do, and there are a bunch of options for API’s. OpenSearch (AKA ElasticSearch) might be a good starting point. GraphQL is a powerful API option as well.
Did you try already? If so, where’s your code so we can have a look?
If you use Hibernate as your data access layer you can use Hibernate Search: https://www.baeldung.com/hibernate-search