Estoy escribiendo una aplicación interna que contiene varios fragmentos de información de texto, así como una cantidad de datos sobre estos fragmentos de texto. Estos datos se guardarán en una base de datos (SQL Server, aunque esto podría cambiar) por orden de entrada.Escribir un índice invertido en C# para una aplicación de recuperación de información
Me gustaría poder buscar la información más relevante de estas, con las más relevantes para estar en la parte superior. Originalmente investigué el uso de la búsqueda de texto completo de SQL Server pero no es tan flexible para mis otras necesidades como esperaba, así que parece que tendré que desarrollar mi propia solución para esto.
Por lo que entiendo, lo que se necesita es un inverted index, luego para que los contenidos de dicho índice invertido sean restaurados y modificados en base a los resultados de la información adicional (aunque por ahora esto puede dejarse para una fecha posterior Solo quiero que el índice invertido indexe el texto principal de la tabla/cadenas de la base de datos proporcionadas).
He tenido un gran problema al escribir este código en Java usando una Hashtable con la clave como las palabras y el valor como una lista de las apariciones de la palabra, pero honestamente todavía soy bastante nuevo en C# y solo han usado cosas realmente como DataSets y DataTables cuando manejan información. Si lo solicita, subiré el código de Java pronto una vez que haya borrado este portátil de virus.
Si se le da un conjunto de entradas de una tabla o de una Lista de cadenas, ¿cómo se puede crear un índice invertido en C# que preferiblemente se guardará en un DataSet/DataTable?
EDIT: Olvidé mencionar que ya he probado Lucene y Nutch, pero necesito mi propia solución ya que modificar Lucene para satisfacer mis necesidades tomaría mucho más tiempo que escribir un índice invertido. Manejaré una gran cantidad de metadatos que también necesitarán tratamiento una vez que se complete el índice invertido básico, por lo que todo lo que necesito por ahora es una búsqueda básica de texto completo en un área usando el índice invertido. Finalmente, trabajar en un índice invertido no es algo que deba hacer todos los días, así que sería genial tener una oportunidad.
Aquí hay otro índice invertido de C# basado en genéricos: http://www.aleandmusic.com/InvertedIndex.aspx –