Add full text search and end-to-end test