@@ -123,15 +123,16 @@ class IndexExpression:
123123 For text expressions, specify a tokenizer. For non-text expressions
124124 (integers, timestamps, etc.), omit the tokenizer to use ``pdb.alias``.
125125
126+ Tokenizer configuration (positional args, named args, token filters,
127+ stemmer, etc.) is supplied directly on the ``tokenizer`` object via
128+ :class:`~paradedb.search.Tokenizer` factory methods (e.g.
129+ ``Tokenizer.simple(options={'stemmer': 'english'})``).
130+
126131 Args:
127132 expression: A Django expression to index (e.g., ``Lower('title')``).
128133 alias: Required. The name used to reference this expression in queries.
129134 tokenizer: Tokenizer for text expressions (e.g., 'simple', 'unicode_words').
130135 Omit for non-text expressions to use ``pdb.alias``.
131- args: Positional arguments for the tokenizer.
132- named_args: Named arguments for the tokenizer configuration.
133- filters: Token filters (e.g., ['lowercase', 'stemmer']).
134- stemmer: Stemmer language (e.g., 'english').
135136
136137 Example::
137138
@@ -162,10 +163,6 @@ class IndexExpression:
162163 expression : Expression | str
163164 alias : str
164165 tokenizer : Tokenizer | None = None
165- args : list [Any ] | None = None
166- named_args : dict [str , Any ] | None = None
167- filters : list [str ] | None = None
168- stemmer : str | None = None
169166
170167
171168class BM25Index (models .Index ):
@@ -275,8 +272,7 @@ def _build_index_expressions(
275272 if tokenizer is not None or alias is not None :
276273 raise ValueError (
277274 f"Field { field_name !r} cannot mix 'tokenizers' with "
278- f"'tokenizer', 'args', 'named_args', 'filters', "
279- f"'stemmer', or 'alias'."
275+ f"'tokenizer' or 'alias'."
280276 )
281277 expressions .extend (
282278 self ._build_multi_tokenizer_expressions (
@@ -373,13 +369,13 @@ def _build_json_key_expressions(
373369 expressions : list [str ] = []
374370 for key , config in json_keys .items ():
375371 tokenizer = config .get ("tokenizer" )
376- if not isinstance (tokenizer , Tokenizer ):
377- raise TypeError ("tokenizer must be a Tokenizer" )
378372 if tokenizer is None :
379373 raise ValueError (
380374 f"JSON key { key !r} in field { field_name !r} requires an explicit "
381375 f"tokenizer (e.g. 'unicode_words', 'simple', 'literal')."
382376 )
377+ if not isinstance (tokenizer , Tokenizer ):
378+ raise TypeError ("tokenizer must be a Tokenizer" )
383379 key_literal = _quote_term (key )
384380 expressions .append (f"(({ column } ->>{ key_literal } )::{ tokenizer .render ()} )" )
385381 return expressions
0 commit comments