opensolr-haystack 0.2.8__tar.gz → 0.2.9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: opensolr-haystack
3
- Version: 0.2.8
3
+ Version: 0.2.9
4
4
  Summary: Haystack integration for Opensolr — managed Apache Solr DocumentStore with server-side embeddings and hybrid BM25+kNN retrieval
5
5
  Author-email: Opensolr <support@opensolr.com>
6
6
  License: MIT
@@ -10,6 +10,7 @@ Direct Solr access (select/update) goes to the index's own host, resolved via
10
10
 
11
11
  from __future__ import annotations
12
12
 
13
+ import re
13
14
  import json
14
15
  from typing import Any, Dict, List, Optional, Tuple
15
16
 
@@ -392,11 +393,19 @@ class OpensolrClient:
392
393
 
393
394
  parts: List[str] = []
394
395
  for doc in hits[:docs]:
395
- text_words = _flat(doc.get("text")).split()[:words]
396
+ # Truncate at the Nth word by CUTTING the original string, never by splitting and
397
+ # re-joining: " ".join(text.split()) throws away every newline and every run of
398
+ # indentation, so a page arrives as one unbroken line with its paragraphs, lists and
399
+ # code blocks flattened. Text handed to a model has to reach it as written; the
400
+ # structure is part of the meaning (2026-08-26).
401
+ body = _flat(doc.get("text"))
402
+ matches = list(re.finditer(r"\S+", body))
403
+ if len(matches) > words:
404
+ body = body[: matches[words - 1].end()]
396
405
  parts.append(
397
- _flat(doc.get("title")) + " - "
398
- + _flat(doc.get("description")) + " - "
399
- + " ".join(text_words) + " - "
406
+ _flat(doc.get("title")) + "\n"
407
+ + _flat(doc.get("description")) + "\n"
408
+ + body + "\n\n"
400
409
  )
401
410
  return "".join(parts)
402
411
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: opensolr-haystack
3
- Version: 0.2.8
3
+ Version: 0.2.9
4
4
  Summary: Haystack integration for Opensolr — managed Apache Solr DocumentStore with server-side embeddings and hybrid BM25+kNN retrieval
5
5
  Author-email: Opensolr <support@opensolr.com>
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "opensolr-haystack"
7
- version = "0.2.8"
7
+ version = "0.2.9"
8
8
  description = "Haystack integration for Opensolr — managed Apache Solr DocumentStore with server-side embeddings and hybrid BM25+kNN retrieval"
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }