Necesito mi aplicación de iPhone/iPad para poder buscar rápidamente alrededor de 10.000 registros (aproximadamente un párrafo de texto, cada uno), para cualquier subcadena contenida dentro del registro. Entonces, si el registro contiene la palabra "Llama", la consulta de "cojo" debe coincidir.Búsqueda de subcadena de texto completo en iOS
Actualmente estoy usando SQLite, pero las búsquedas de "LIKE% term%" son demasiado lentas para estos muchos registros. Habilitar la búsqueda de texto completo no parece satisfacer completamente mis necesidades, ya que SQLite solo admite prefijos comodines (por ejemplo, "Flam *", no "* lame").
He experimentado con el uso de una burbuja de texto gigante (~ 350K), y haciendo [NSString rangeOfString: ...], que creo que utiliza un algoritmo Boyer-Moore. Esto es más rápido que las búsquedas de "LIKE% term%", pero todavía no es el tipo de velocidad que estoy esperando.
¿Alguna sugerencia de enfoques, o bibliotecas que logren este tipo de búsqueda de subcadenas escalable, y que funcionaría en un iPhone?
Tuve un problema similar de conjunto de datos/consulta que me pareció que tenía que usar la interfaz de usuario y los trucos de enhebrar para que se sintiera receptivo. Hice toda la búsqueda en un hilo de trabajo que cancelaría/volvería a ejecutar la búsqueda según el usuario mecanografió. No encontré una bala mágica. – NWCoder
Gracias NWCoder. También he considerado ese tipo de enfoque asincrónico. Aparte de eso, ¿en qué enfoque se decidió a buscar? ¿Me gustan las consultas? –
Sí, solo pude obtener los resultados correctos con LIKE. Una nota extra, terminé creando un objeto simple con solo el texto de búsqueda y una ID que hace referencia a los atributos extendidos para el objeto. En la versión específica de búsqueda normalicé el texto (todo en minúscula sin puntuación, etc.) y me ayudó un poco, pero no mucho. (Tal vez 5-10% de aumento de velocidad.) – NWCoder