Skip to content

Commit 259ed1e

Browse files
committed
Apply low-risk cleanup and docs consistency fixes
1 parent ffc72a6 commit 259ed1e

3 files changed

Lines changed: 8 additions & 12 deletions

File tree

README.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ pip install -e .[test,dev]
2626
- `paradedb.sqlalchemy.search`: ParadeDB predicates (`match_all`, `fuzzy`, `parse`, `more_like_this`, etc.).
2727
- `paradedb.sqlalchemy.pdb`: function wrappers (`score`, `snippet`, `snippets`, `agg`).
2828
- `paradedb.sqlalchemy.facets`: aggregate/facet JSON builders and rows+facets helper.
29-
- `paradedb.sqlalchemy.select_with`: select decorators for score/snippet/snippet_positions columns.
29+
- `paradedb.sqlalchemy.select_with`: select decorators for score/snippet/snippets/snippet_positions columns.
3030
- `paradedb.sqlalchemy.alembic`: Alembic operations for BM25 index lifecycle.
3131

3232
## Quickstart
@@ -58,18 +58,20 @@ products_bm25_idx = Index(
5858
"products_bm25_idx",
5959
indexing.BM25Field(Product.id),
6060
indexing.BM25Field(
61-
expr.json_text(Product.metadata, "color"),
61+
expr.json_text(Product.metadata_, "color"),
6262
tokenizer=indexing.tokenize.literal(alias="metadata_color"),
6363
),
6464
indexing.BM25Field(
65-
expr.json_text(Product.metadata, "location"),
65+
expr.json_text(Product.metadata_, "location"),
6666
tokenizer=indexing.tokenize.literal(alias="metadata_location"),
6767
),
6868
postgresql_using="bm25",
6969
postgresql_with={"key_field": "id"},
7070
)
7171
```
7272

73+
Use `metadata_` as the ORM attribute name if your underlying column is named `metadata`.
74+
7375
Tokenizer configs can use a Django/Rails-style structured shape:
7476

7577
```python
@@ -107,7 +109,7 @@ products_bm25_idx = Index(
107109

108110
- Basic predicates: `match_all`, `match_any`, `term`, `phrase`, `fuzzy`, `regex`, `all`
109111
- Advanced predicates: `parse`, `phrase_prefix`, `regex_phrase`, `near`, `proximity`, `more_like_this`
110-
- Scoring/snippets: `pdb.score`, `pdb.snippet`, `pdb.snippets`, `pdb.snippet_positions`, `select_with.score`, `select_with.snippet`, `select_with.snippet_positions`
112+
- Scoring/snippets: `pdb.score`, `pdb.snippet`, `pdb.snippets`, `pdb.snippet_positions`, `select_with.score`, `select_with.snippet`, `select_with.snippets`, `select_with.snippet_positions`
111113
- Aggregations/facets: `facets.*` builders + `pdb.agg(...)`
112114
- Rows + facets: `facets.with_rows(...)`
113115

paradedb/sqlalchemy/expr.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,10 @@
33
from sqlalchemy import func, literal
44
from sqlalchemy.sql.elements import ClauseElement
55

6-
from .indexing import TokenizerSpec
7-
86

97
def json_text(json_expr: ClauseElement, key: str) -> ClauseElement:
108
return json_expr.op("->>")(literal(key))
119

1210

1311
def concat_ws(separator: str, *parts: ClauseElement) -> ClauseElement:
1412
return func.concat_ws(separator, *parts)
15-
16-
17-
def tokenizer_alias(tokenizer: TokenizerSpec | None) -> str | None:
18-
return None if tokenizer is None else tokenizer.alias

tests/integration/test_paradedb_queries_integration.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from __future__ import annotations
88

99
import pytest
10-
from sqlalchemy import select
10+
from sqlalchemy import func, select
1111

1212
from conftest import MockItem, assert_uses_paradedb_scan
1313
from paradedb.sqlalchemy import pdb, search
@@ -583,7 +583,7 @@ def test_all_predicate_matches_everything(mock_session):
583583
"""search.all() matches every indexed row."""
584584
total = mock_session.scalar(
585585
select(MockItem.id).where(search.all(MockItem.id)).with_only_columns(
586-
__import__("sqlalchemy").func.count()
586+
func.count()
587587
)
588588
)
589589
# mock_items typically has many rows (paradedb creates ~41)

0 commit comments

Comments
 (0)