2013-02-15 1 views
1

Многие веб-сайты, особенно розничные сайты, позволяют сортировать по «релевантности» таким же образом, как вы можете по цене. Я предполагаю, что это средство основано на количестве слов, которые вы искали, сколько из них соответствует базе данных.Подсчет совпадающих слов в Entity Framework с Linq

Например, если в моей реляционной базе данных была таблица условий поиска и для определенного продукта, три условия были таблицей, теннисным клубом, и я искал на веб-сайте для зала для настольного тенниса, у меня была бы точность 66%, так как 2 из 3 соответствий.

Мне нужна эта функциональность, но я использую EF и понятия не имею, с чего начать. Итак, в буквальном смысле я после% («оценка точности» или релевантность).

Я счастлив показать свой код до сих пор, но, честно говоря, я чувствую, что на странице выкладываю 70 строк кода, чтобы доказать, что я пробовал что-то не принесет никакой пользы, поэтому, если вы хотите код, я покажу его, если нет, может ли кто-нибудь дать мне какие-либо указатели или даже фразы для Google?

+0

Я точно не знаю, но вам может быть интересно проверить [Lucene] (http://blogs.apache.org/lucenenet/). –

ответ

0

Предполагая, что это проект SQL Server, вы можете начать с поиска полнотекстового поиска/полного текстового каталога. Используя их при поиске CONTAINSTABLE10 или FREETEXTTABLE, возвращается результат, который является показателем относительной значимости, а не процентом. С точки зрения EF я решил найти самое легкое решение - вызвать хранимую процедуру, чтобы получить ранжированные результаты (оценка и идентификатор) вне EF, а затем загрузить объекты из контекста по идентификатору. Я написал полукоммерческую хранимую процедуру, позволяющую мне весить мои результаты на основе релевантности включенного поля. Я отправил некоторые из этих вопросов на мой вопрос: Code-First Entity Framework w/ Stored Procedure returning results from complex Full-text Searches

+0

hmmmm. Чем больше я использую EF, тем больше я чувствую его ограничения. Да, неплохо иметь картографию, и это стоит своего веса, но это очень ограничительно в других. Полагаю, именно поэтому мы не должны просто использовать его только потому, что это новая/легкая настройка и т. Д.! Спасибо за хороший ответ, хотя в этом случае я на SQL Express! (извините за то, что не ясно) – Dave

Смежные вопросы