Superficially this is akin to auto completing a postal address on a form, except that that process is familiar to quite a lot of people and it's usually specifically the postcode that is the key enabler to determining a small number of possible addresses from which the user selects the correct house number and the form is completed automatically. Example at postcoder.com
However, what you have here is not quite so focused on a single level of detail, and so the problem for the user becomes: "When is it ok for me to click on the button".
You don't want to let the user enter just 'e' and then allow a search because that could be millions of results. Neither do you want to force the user to enter more information than is actually required to find the book. The button has to be both 'useful' and contextually relevant.
How to solve this:
Indicate progress towards goal: In order not to make this a problem for the user, you have to give some indication of whether there is enough information entered so far to make the button useful, and this could be a progressive calculation each time the user moves from one field to the next. For example - calculate the number of results which match and display appropriate information, as follows:
Too many books - just show the number: If too many books match so far just display the number of books matching so that the user can see the amount of information is too vague. This will spur the user on to entering more accurate information if they can.
Less than 50 books - display number and provide access to a list: Once the number of results reaches something manageable, say between 6 and 50 results then still display the number of books and display a 'list possible matches' button to optionally browse those results and pick one to auto-complete the form - or depending on your context, maybe via the list you'll be able to by-pass the form and jump straight to the book?
A handful of books - list them automatically: If the number of results is low - say 5 or less, dispense with the button and just show the matching results anyway in a short list beside the form. Again - you may be able to dispense with form completion at that point.
No books - say so: If no results are found, indicate this clearly asap because the user is not going to get any further by entering more information.
Caveat: Much of this relies on being able to provide timely responsive feedback in situ, but if you can do this, the button problems go away.