While users enjoy the convenience of data outsourcing in the cloud, they also face the risks of data modification and private information leakage. Searchable encryption technology can perform keyword searches over encrypted data while protecting their privacy and guaranteeing the integrity of the data by verifying the search results. However, some associated problems are still encountered, such as the low efficiency of verification and uncontrollable query results. Accordingly, this paper proposes a Privacy-Preserving Searchable Encryption (PPSE) scheme based on public and private blockchains. First, we store an encrypted index in a private blockchain while outsourcing corresponding encrypted documents to a public blockchain. The encrypted documents are located through the encrypted index. This method can reduce the storage overhead on the blockchains, and improve the efficiency of transaction execution and the security of stored data. Moreover, we adopt a smart contract to introduce a secondary verification access control mechanism and restrict data users' access to the private blockchain through authorization for the purpose of guaranteeing data privacy and the correctness of access control verification. Finally, the security analysis and experimental results indicate that compared with existing schemes, the proposed scheme can not only improve the security of encrypted data but also guarantee the efficiency of the query.