Here comes my solution:
All the part searching can be done with some lightweight SQL database, so you need listener which registers the characters entered. If there has been over 3 chars entered...