сайт написан на asp.net с граненым поиском - PullRequest
0 голосов
/ 06 марта 2012

Я пишу веб-сайт (используя Entity Framework, MySQL, .net 4, C #), в котором есть много категорий с подкатегориями до 3 уровней, когда пользователь найдет то, что он искал, каждый «продукт» можетнапример, могут иметь различные атрибуты:

«Рестораны» могут иметь: среднюю цену на блюдо, доступное детское меню и «Тренажерный зал»: бассейн, личный тренер

Я новичок вC # и не могу понять, как реализовать хотя бы одноименное решение для граненого поиска без использования библиотеки Lucene.NET и поисковой системы Solr, тем более, что я буду использовать, вероятно, среду общего хостинга.

Интересно, кто-нибудь попытался реализоватьаналогичные функциональные возможности без использования этих технологий и некоторые идеи о структуре БД и примерах кода ...

Также, если мне придется использовать Lucene и Solr, кто-нибудь знает какой-нибудь дешевый VPS-хостинг, который позволяет устанавливать и использовать Solr, итакже может дать некоторый урок, как создать такой граненый поиск, как я могне удалось найти.

Спасибо

Ответы [ 2 ]

1 голос
/ 07 марта 2012

Как объяснено в в этом вопросе , реляционные базы данных не могут эффективно реализовать фасетирование. Lucene.NET работает в процессе, поэтому это не должно быть проблемой для среды общего хостинга. Или вы можете посмотреть на размещенные поисковые решения .

0 голосов
/ 07 марта 2012

Подкатегории могут быть эффективно реализованы до любой глубины.Реализация многогранного поиска для Books, Books>Non-Fiction и Books>Non-Fiction>Diet проста: см. Мой вопрос об иерархической огранке: Способы выполнения иерархической огранки в Solr? .


Динамические поля - ваш друг для добавления атрибутов в ваши сущности.Измените schema.xml

<dynamicField name="*_i"  type="int"    indexed="true"  stored="true"/>
<dynamicField name="*_s"  type="string"  indexed="true"  stored="true"/>
<dynamicField name="*_t"  type="text"    indexed="true"  stored="true"/>
//you may need a multi-valued string type if you want faceting

Таким образом, вы можете просто добавить документ:

restaurant_average_dish_price_i: 123
restaurant_kids_menu_available_s:"yes"

Первое поле будет int, готовое для операций сравнения, второе станет строкойготов к огранке.

http://www.tnrglobal.com/blog/2010/07/dynamic-fields-in-apache-solr/

http://wiki.apache.org/solr/SchemaXml#Dynamic_fields


Что касается вариантов развертывания, следуйте ответу Маурисио Шеффера.

...