Skip to content

Commit 4a0a054

Browse files
authored
fix: linefeeds in custom_query (#3813)
* fix linefeeds in custom_query * add double quote test case
1 parent 0c2d13f commit 4a0a054

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

haystack/document_stores/search_engine.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1064,7 +1064,7 @@ def _construct_query_body(
10641064
elif custom_query: # substitute placeholder for query and filters for the custom_query template string
10651065
template = Template(custom_query)
10661066
# replace all "${query}" placeholder(s) with query
1067-
substitutions = {"query": f'"{query}"'}
1067+
substitutions = {"query": json.dumps(query)}
10681068
# For each filter we got passed, we'll try to find & replace the corresponding placeholder in the template
10691069
# Example: filters={"years":[2018]} => replaces {$years} in custom_query with '[2018]'
10701070
if filters:

test/nodes/test_retriever.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,14 @@ def test_elasticsearch_custom_query():
272272
results = retriever.retrieve(query="test", filters={"years": ["2020", "2021"]})
273273
assert len(results) == 4
274274

275+
# test linefeeds in query
276+
results = retriever.retrieve(query="test\n", filters={"years": ["2020", "2021"]})
277+
assert len(results) == 3
278+
279+
# test double quote in query
280+
results = retriever.retrieve(query='test"', filters={"years": ["2020", "2021"]})
281+
assert len(results) == 3
282+
275283
# test custom "term" query
276284
retriever = BM25Retriever(
277285
document_store=document_store,

0 commit comments

Comments
 (0)