Я пытаюсь реализовать что-то вроде Google на веб-сайте, который я создаю, и мне интересно, как это сделать в очень большом наборе данных. Конечно, если у вас 1000 предметов, вы кешируете элементы и просто просматриваете их. Но как вы это делаете, когда у вас есть миллион предметов? Кроме того, предположим, что элементы не являются одним словом. В частности, я был очень впечатлен Pandora.com. Например, если вы ищете "мокрый", он возвращает "Мокрый песок", но он также возвращает Toad The Wet Sprocket. И их автозаполнение FAST. Моя первая идея состояла в том, чтобы сгруппировать элементы по первым двум буквам, поэтому у вас будет что-то вроде:
Dictionary<string,List<string>>
где ключ - это первые две буквы. Это нормально, но что, если я хочу сделать что-то похожее на pandora и позволить пользователю видеть результаты, соответствующие середине строки? С моей идеей: Мокрый никогда не будет соответствовать Жабам Мокрый Звездочке, потому что это будет в ковре "ТО" вместо ведра "МЫ". Итак, возможно, вы могли бы разбить строку и "Жаба влажной звездочки" зайти в ведра "TO", "WE" и "SP" (вырезать слово "THE" ), но когда вы говорите о миллионе записи, которые, возможно, говорят несколько слов, возможно, похоже, что вы быстро начнете использовать много памяти. Хорошо, это был длинный вопрос. Мысли?