Skip to content

Commit 4b0035d

Browse files
authored
Merge pull request #36 from Chetic/claude/fix-jira-search-results-KjM9Z
Claude/fix jira search results kj m9 z
2 parents 8597870 + 7de82b4 commit 4b0035d

File tree

2 files changed

+26
-10
lines changed

2 files changed

+26
-10
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ __pycache__/
77
env/
88
venv/
99
.venv/
10+
uv.lock
1011
ENV/
1112
build/
1213
develop-eggs/

src/chunksilo/search.py

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1128,6 +1128,7 @@ def run_search(
11281128
rerank_request = RerankRequest(query=enhanced_query, passages=passages)
11291129
reranked_results = reranker.rerank(rerank_request)
11301130

1131+
# Build text-to-node mapping for fallback text matching
11311132
text_to_indices: dict[str, list[tuple[int, NodeWithScore]]] = {}
11321133
for idx, node in enumerate(nodes):
11331134
node_text = node.node.get_content() or ""
@@ -1138,20 +1139,34 @@ def run_search(
11381139
reranked_nodes = []
11391140
seen_indices: set[int] = set()
11401141
for result in reranked_results:
1141-
doc_text = result.get("text", "")
11421142
score = result.get("score", 0.0)
1143-
1144-
if doc_text in text_to_indices:
1145-
for idx, node in text_to_indices[doc_text]:
1146-
if idx not in seen_indices:
1147-
reranked_nodes.append(node)
1148-
rerank_scores[id(node)] = float(score)
1149-
seen_indices.add(idx)
1150-
break
1151-
1143+
result_idx = result.get("id")
1144+
1145+
# Primary: match by index (flashrank returns original passage index)
1146+
if result_idx is not None and 0 <= result_idx < len(nodes):
1147+
if result_idx not in seen_indices:
1148+
node = nodes[result_idx]
1149+
reranked_nodes.append(node)
1150+
rerank_scores[id(node)] = float(score)
1151+
seen_indices.add(result_idx)
1152+
else:
1153+
# Fallback: match by text content
1154+
doc_text = result.get("text", "")
1155+
if doc_text in text_to_indices:
1156+
for idx, node in text_to_indices[doc_text]:
1157+
if idx not in seen_indices:
1158+
reranked_nodes.append(node)
1159+
rerank_scores[id(node)] = float(score)
1160+
seen_indices.add(idx)
1161+
break
1162+
1163+
# Add remaining unmatched nodes with minimum matched score
1164+
# This ensures Jira/Confluence results aren't dropped due to text mismatch
1165+
min_score = min(rerank_scores.values()) if rerank_scores else 0.0
11521166
for idx, node in enumerate(nodes):
11531167
if idx not in seen_indices:
11541168
reranked_nodes.append(node)
1169+
rerank_scores[id(node)] = min_score
11551170

11561171
nodes = reranked_nodes[:rerank_limit]
11571172
except Exception as e:

0 commit comments

Comments
 (0)