Skip to content
GitHub

Configuration

Config section: search (SearchConfig). Env prefix: LEX_SEARCH__.

KeyTypeDefaultEnv VarDescription
enabledboolTrueLEX_SEARCH__ENABLEDEnable the search subsystem
backend_typeBackendTypememoryLEX_SEARCH__BACKEND_TYPESearch backend provider
timeoutfloat30.0LEX_SEARCH__TIMEOUTDefault request timeout (seconds)
databasestr | NoneNoneLEX_SEARCH__DATABASENamed database for DB-backed backends
backendslist[NamedSearchConfig][]Multi-backend declarations
KeyTypeDefaultEnv VarDescription
query.strategystr"fuzzy"LEX_SEARCH__QUERY__STRATEGYSearch strategy
query.default_limitint20LEX_SEARCH__QUERY__DEFAULT_LIMITDefault results per page
query.max_limitint100LEX_SEARCH__QUERY__MAX_LIMITMaximum results allowed
query.enable_highlightingboolTrueLEX_SEARCH__QUERY__ENABLE_HIGHLIGHTINGEnable search term highlighting
query.enable_facetingboolTrueLEX_SEARCH__QUERY__ENABLE_FACETINGEnable faceted search
query.enable_aggregationsboolFalseLEX_SEARCH__QUERY__ENABLE_AGGREGATIONSEnable result aggregations
query.fuzzy_thresholdfloat0.8LEX_SEARCH__QUERY__FUZZY_THRESHOLDFuzzy matching threshold
KeyTypeDefaultEnv VarDescription
operations.max_retriesint3LEX_SEARCH__OPERATIONS__MAX_RETRIESMax retry attempts
operations.retry_backofffloat0.5LEX_SEARCH__OPERATIONS__RETRY_BACKOFFRetry backoff multiplier
operations.request_timeoutfloat30.0LEX_SEARCH__OPERATIONS__REQUEST_TIMEOUTRequest timeout (seconds)
operations.bulk_chunk_sizeint500LEX_SEARCH__OPERATIONS__BULK_CHUNK_SIZEBulk request chunk size
KeyTypeDefaultEnv VarDescription
meilisearch.urlstr"http://localhost:7700"LEX_SEARCH__MEILISEARCH__URLMeiliSearch server URL
meilisearch.api_keySecretStr | NoneNoneLEX_SEARCH__MEILISEARCH__API_KEYAPI key
meilisearch.timeoutint30LEX_SEARCH__MEILISEARCH__TIMEOUTRequest timeout
meilisearch.max_connectionsint10LEX_SEARCH__MEILISEARCH__MAX_CONNECTIONSMax connections
meilisearch.typo_tolerance_enabledboolTrueEnable typo tolerance
meilisearch.searchable_attributeslist[str]["title","name","description","content","text","body"]Fields to search
meilisearch.filterable_attributeslist[str][]Attribute-based filtering
meilisearch.sortable_attributeslist[str]["created_at","updated_at"]Attribute-based sorting
KeyTypeDefaultEnv VarDescription
elasticsearch.hostslist[str]["http://localhost:9200"]LEX_SEARCH__ELASTICSEARCH__HOSTSElasticsearch hosts
elasticsearch.api_keySecretStr | NoneNoneLEX_SEARCH__ELASTICSEARCH__API_KEYAPI key
elasticsearch.usernamestr | NoneNoneLEX_SEARCH__ELASTICSEARCH__USERNAMEBasic auth username
elasticsearch.passwordSecretStr | NoneNoneLEX_SEARCH__ELASTICSEARCH__PASSWORDBasic auth password
elasticsearch.use_sslboolFalseLEX_SEARCH__ELASTICSEARCH__USE_SSLEnable SSL
elasticsearch.verify_certsboolTrueVerify SSL certificates
elasticsearch.index_prefixstr"lexigram_search_"Index name prefix
elasticsearch.number_of_shardsint1Number of shards
elasticsearch.number_of_replicasint0Number of replicas
KeyTypeDefaultEnv VarDescription
postgres.connection_stringSecretStr""LEX_SEARCH__POSTGRES__CONNECTION_STRINGConnection string
postgres.text_search_configstr"english"Text search configuration
postgres.enable_trigramboolTrueEnable pg_trgm extension
postgres.auto_create_tablesboolTrueAuto-create search tables
KeyTypeDefaultEnv VarDescription
sqlite.db_pathstr":memory:"LEX_SEARCH__SQLITE__DB_PATHDatabase file path
sqlite.tokenizerstr"porter unicode61"FTS5 tokenizer
sqlite.auto_create_tablesboolTrueAuto-create FTS tables
KeyTypeDefaultEnv VarDescription
typesense.api_keySecretStr | NoneNoneLEX_SEARCH__TYPESENSE__API_KEYAPI key
typesense.nodeslist[dict][{"host":"localhost","port":"8108","protocol":"http"}]Cluster nodes
typesense.connection_timeoutint30Connection timeout
typesense.health_check_intervalint60Health check interval
KeyTypeDefaultEnv VarDescription
opensearch.hostslist[str]["http://localhost:9200"]OpenSearch hosts
opensearch.index_prefixstr"lexigram_search_"Index name prefix
opensearch.usernamestr | NoneNoneUsername
opensearch.passwordstr | NoneNonePassword
opensearch.use_sslboolFalseEnable SSL
opensearch.verify_sslboolTrueVerify SSL certificates
opensearch.timeoutint30Request timeout
KeyTypeDefaultEnv VarDescription
mongo.connection_stringSecretStr""LEX_SEARCH__MONGO__CONNECTION_STRINGConnection string
mongo.database_namestr"search"Database name
mongo.use_atlas_searchboolFalseUse Atlas Search

NamedSearchConfig (for backends[] entries)

Section titled “NamedSearchConfig (for backends[] entries)”
KeyTypeDefaultDescription
namestrUnique backend name (DI key)
primaryboolFalseAlso register under unnamed binding
backend_typeBackendTypememoryBackend for this entry
databasestr | NoneNoneNamed database reference
meilisearchMeiliSearchConfig | NoneNonePer-backend config
elasticsearchElasticsearchConfig | NoneNonePer-backend config
opensearchOpenSearchConfig | NoneNonePer-backend config
typesenseTypesenseConfig | NoneNonePer-backend config
postgresPostgresSearchConfig | NoneNonePer-backend config
mysqlMySQLSearchConfig | NoneNonePer-backend config
sqliteSQLiteSearchConfig | NoneNonePer-backend config
mongoMongoSearchConfig | NoneNonePer-backend config
search:
enabled: true
backend_type: meilisearch
timeout: 10.0
query:
strategy: fuzzy
default_limit: 20
enable_highlighting: true
fuzzy_threshold: 0.8
meilisearch:
url: http://localhost:7700
api_key: "${MEILI_API_KEY}"
operations:
max_retries: 3
bulk_chunk_size: 500
Terminal window
export LEX_SEARCH__BACKEND_TYPE=meilisearch
export LEX_SEARCH__TIMEOUT=10.0
export LEX_SEARCH__MEILISEARCH__URL=http://localhost:7700
export LEX_SEARCH__MEILISEARCH__API_KEY=sk-...
export LEX_SEARCH__QUERY__STRATEGY=fuzzy