def test_hybrid_search_searchable_attributes(self):
        """
        Tests that searchable attributes work as expected for all methods
        """
        for index_name in [self.text_index_name, self.unstructured_text_index_name]:
            with self.subTest(index=index_name):
                self.client.index(index_name).add_documents(
                    self.docs_list,
                    tensor_fields=["text_field_1", "text_field_2", "text_field_3"] \
                        if "unstructured" in index_name else None
                )

                with self.subTest("retrieval: disjunction, ranking: rrf"):
                    hybrid_res = self.client.index(index_name).search(
                        "puppies",
                        search_method="HYBRID",
                        hybrid_parameters={
                            "retrievalMethod": "disjunction",
                            "rankingMethod": "rrf",
                            "alpha": 0.5,
                            "searchableAttributesLexical": ["text_field_2"],
                            "searchableAttributesTensor": ["text_field_2"]
                        },
                        limit=10
                    )
                    self.assertEqual(len(hybrid_res["hits"]), 3)  # Only 3 documents have text_field_2 at all
                    self.assertEqual(hybrid_res["hits"][0]["_id"], "doc12")  # puppies puppies in text field 2
                    self.assertEqual(hybrid_res["hits"][1]["_id"], "doc13")
                    self.assertEqual(hybrid_res["hits"][2]["_id"], "doc11")

                with self.subTest("retrieval: lexical, ranking: tensor"):
                    hybrid_res = self.client.index(index_name).search(
                        "puppies",
                        search_method="HYBRID",
                        hybrid_parameters={
                            "retrievalMethod": "lexical",
                            "rankingMethod": "tensor",
                            "searchableAttributesLexical": ["text_field_2"]
                        },
                        limit=10
                    )
                    self.assertEqual(len(hybrid_res["hits"]),
                                        1)  # Only 1 document has puppies in text_field_2. Lexical retrieval will only get this one.
                    self.assertEqual(hybrid_res["hits"][0]["_id"], "doc12")

                with self.subTest("retrieval: tensor, ranking: lexical"):
                    hybrid_res = self.client.index(index_name).search(
                        "puppies",
                        search_method="HYBRID",
                        hybrid_parameters={
                            "retrievalMethod": "tensor",
                            "rankingMethod": "lexical",
                            "searchableAttributesTensor": ["text_field_2"]
                        },
                        limit=10
                    )
                    self.assertEqual(len(hybrid_res["hits"]),
                                        3)  # Only 3 documents have text field 2. Tensor retrieval will get them all.
                    self.assertEqual(hybrid_res["hits"][0]["_id"], "doc12")
                    # doc11 and doc13 has score 0, so their order is non-deterministic
                    self.assertSetEqual({'doc11', 'doc13'}, {hit["_id"] for hit in hybrid_res["hits"][1:]})

        Tests that searchable attributes work as expected for all methods
        
tests/api_tests/v1/tests/api_tests/structured_index/test_hybrid_search.py