diff --git a/api/funkwhale_api/common/search.py b/api/funkwhale_api/common/search.py
index deb2607f9f38edcf65e7e8489d03924ea6aceb17..06f2d02a256c61ec1ca18e595f2e97cf0215a7ae 100644
--- a/api/funkwhale_api/common/search.py
+++ b/api/funkwhale_api/common/search.py
@@ -60,9 +60,11 @@ def get_query(query_string, search_fields):
 
 
 def get_fts_query(query_string, fts_fields=["body_text"], model=None):
+    search_type = "plain"
     if query_string.startswith('"') and query_string.endswith('"'):
         # we pass the query directly to the FTS engine
         query_string = query_string[1:-1]
+        search_type = "raw"
     else:
         parts = query_string.replace(":", "").split(" ")
         parts = ["{}:*".format(p) for p in parts if p]
@@ -86,7 +88,7 @@ def get_fts_query(query_string, fts_fields=["body_text"], model=None):
             subquery = related_model.objects.filter(
                 **{
                     lookup: SearchQuery(
-                        query_string, search_type="raw", config="english_nostop"
+                        query_string, search_type=search_type, config="english_nostop"
                     )
                 }
             ).values_list("pk", flat=True)
@@ -95,7 +97,7 @@ def get_fts_query(query_string, fts_fields=["body_text"], model=None):
             new_query = Q(
                 **{
                     field: SearchQuery(
-                        query_string, search_type="raw", config="english_nostop"
+                        query_string, search_type=search_type, config="english_nostop"
                     )
                 }
             )
diff --git a/api/tests/music/test_views.py b/api/tests/music/test_views.py
index 3ab5812f2f49072298c8ae278066772799f3efa8..673bc13abce74a110f258670233f2eb39e72b1c1 100644
--- a/api/tests/music/test_views.py
+++ b/api/tests/music/test_views.py
@@ -1374,23 +1374,6 @@ def test_search_get_fts_advanced(logged_in_api_client, factories):
     assert response.data == expected
 
 
-def test_search_get_fts_stop_words(logged_in_api_client, factories):
-    artist = factories["music.Artist"](name="she")
-    factories["music.Artist"](name="something else")
-
-    url = reverse("api:v1:search")
-    expected = {
-        "artists": [serializers.ArtistWithAlbumsSerializer(artist).data],
-        "albums": [],
-        "tracks": [],
-        "tags": [],
-    }
-    response = logged_in_api_client.get(url, {"q": "sh"})
-
-    assert response.status_code == 200
-    assert response.data == expected
-
-
 @pytest.mark.parametrize(
     "route, factory_name",
     [
diff --git a/changes/changelog.d/1196.bugfix b/changes/changelog.d/1196.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..3cd0e29ed5f28e4d19e3d3f3cb78cd852a3b17df
--- /dev/null
+++ b/changes/changelog.d/1196.bugfix
@@ -0,0 +1 @@
+Fixed broken search when using (, " or & chars (#1196)
\ No newline at end of file