Я пишу собственное приложение, которое содержит несколько фрагментов текстовой информации, а также ряд фрагментов данных об этих фрагментах текста. Эти фрагменты данных будут храниться в базе данных (SQL Server, хотя это может измениться) в порядке ввода.
Я хотел бы иметь возможность искать наиболее релевантную из этих частей информации, причем наиболее релевантная из них должна быть вверху. Первоначально я изучал использование полнотекстового поиска SQL Server, но он не настолько гибок для других моих потребностей, как я надеялся, поэтому мне кажется, что мне нужно будет разработать собственное решение для этого.
Из того, что я понимаю, необходим инвертированный индекс , а затем содержимое упомянутого инвертированного индекса должно быть восстановлено и изменено на основе результатов дополнительной информации (хотя на данный момент это может быть оставил на более поздний срок, так как я просто хочу, чтобы инвертированный индекс индексировал основной текст из предоставленной таблицы / строк базы данных).
У меня была проблема с написанием этого кода на Java с использованием Hashtable с ключом в качестве слов и значением в виде списка вхождений слова, но, честно говоря, я все еще новичок в C # и имею только реально используемые вещи, как DataSets и DataTables, при обработке информации. Если потребуется, я скоро загрузлю код Java, как только очистил этот ноутбук от вирусов.
Если задан набор записей из таблицы или из списка строк, как можно создать инвертированный индекс в C #, который предпочтительно будет сохранять в DataSet / DataTable?
РЕДАКТИРОВАТЬ: Я забыл упомянуть, что я уже пробовал Lucene и Nutch, но мне нужно мое собственное решение, так как изменение Lucene для удовлетворения моих потребностей займет гораздо больше времени, чем написание перевернутого индекса. Я буду обрабатывать много метаданных, которые также потребуют обработки, как только базовый инвертированный индекс будет завершен, поэтому все, что мне сейчас нужно, - это базовый полнотекстовый поиск в одной области с использованием инвертированного индекса. Наконец, работа с инвертированным индексом - это не то, чем я занимаюсь каждый день, так что было бы замечательно иметь на это трещину.