Que tal. Lo de usar indices es la idea mas eficiente, creo yo tambien. No se si sabes algo sobre estructuras de bases de datos, cosas como arboles b y b+, tablas de hash, gridfiles, etc, entre los cuales estan incluidos los indices, que son los mas basicos para buscar registros en un archivo. Pero solo te hablo de esto si conoces estas estrcucturas, sino simplemente haz caso a los indices.
Lo que se suele hacer a veces es utilizar una clase para buscar. Por ejemplo, esto se hace en java para ordenar registros por varios campos. Podrias usarlo tambien para buscar.
La idea basica seria crear una clase busqueda o buscar con los parametros necesarios para buscar y un parametro de "tipo busqueda" como sigue:
class busqueda{
string campo //campo de busqueda por ejemplo, el titulo, por decir alguno.
.... //otros parametros que quiza se requieran dentro de la clase.
busqueda siguiente //este contendra el siguiente campo de busqueda, si es que el titulo no esta especificado.
Bueno, no me extiendo mas porque quiza no te interese esta idea, sin embargo es algo tambien eficiente y con costo muy bajo. Cualquier cosa me preguntas y te digo mas detalles si esto te interesa. Suerte.