Общий строковый фильтр / поиск - PullRequest
0 голосов
/ 02 мая 2011

Я ищу несколько ярких идей относительно фильтрации и поиска строк или, по крайней мере, ссылки на некоторые хорошие статьи на эту тему. У меня есть приложение C # WP7, в котором есть список элементов, и оно ищет другой список. Но я считаю, что фильтр не очень хорош. Допустим, у меня есть Франциско в одном списке, он найдет мост Сан-Франциско в этом списке. Одна идея состоит в том, чтобы быть точной, но тогда вы пропустите такие вещи, как «Бухта» не будет соответствовать «Бухте».

Полагаю, я ищу лучшие практики, чтобы сделать движок фильтрации более интеллектуальным, сейчас он в значительной степени просто отображается, если вы найдете какое-либо совпадение в любом месте списка. Ниже приведен базовый код, который я использую, очень простой поиск по имени. Просто хочу несколько идей, чтобы сделать его более «умным».

subList.Select (arty => mainList.Where (Item => Item.AllItems.IndexOf (item.Name, StringComparison.OrdinalIgnoreCase)> = 0))

1 Ответ

0 голосов
/ 02 мая 2011

Другим популярным подходом является сходство с точки зрения необходимых операций вставки, удаления или подстановки для перехода от одной строки (условия поиска) к другой (совпадения в хранилище данных) - расстояние Левенштейна .

Вы можете вычислить балл, используя расстояние Левенштейна (или Изменить), а затем взять верхнюю букву N с точки зрения минимальных изменений, необходимых ниже определенного порога.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...