Лучшие практики для реализации поиска Lucene на сайте электронной коммерции asp.net - PullRequest
0 голосов
/ 31 июля 2009

Мне было поручено установить службу поиска на сайте электронной коммерции. В настоящее время он использует полнотекстовое индексирование на сервере sql, что не является идеальным, поскольку он медленный и не настолько гибкий.

Как бы вы посоветовали мне перейти на люцен? Под этим я подразумеваю, как мне изначально загрузить все данные в индексы и как их поддерживать? на моих методах "вставка товара", я бы тоже вставил его в индекс?

любая информация очень полезна!

Ответы [ 2 ]

3 голосов
/ 31 июля 2009

В настоящее время я использую Solr, который построен на основе Lucene, в качестве поисковой системы для одного из моих проектов электронной коммерции. Работает отлично.

http://lucene.apache.org/solr/

Кроме того, что касается синхронизации продуктов между БД и Solr, вы можете либо создать свой собственный «очиститель», либо реализовать DataImportHandler в Solr.

http://wiki.apache.org/solr/DataImportHandler

Мы создаем наш собственный механизм очистки, который через некоторое время читает представление БД и проверяет, есть ли новые продукты или какие-либо данные о продуктах были обновлены. Это метод грубой силы, и я бы хотел знать о DataImportHandler раньше.

Аспекты также являются действительно мощной частью Solr. Я настоятельно рекомендую использовать их.

2 голосов
/ 31 июля 2009

Если вы решили использовать Lucene.NET для поиска, вам необходимо выполнить одно из следующих действий:

  • создайте ваш начальный индекс перебирая все ваши записи и запись данных, которые вы хотите искал в вашем индексе
  • если количество записей и данных, которые вы записываете в свои индексы, составляет для больших индексов, тогда рассмотрите возможность встраивания их в несколько индексов (это означает, что вам придется создать более сложную программу поиска, так как вам нужно искать каждый индекс, а затем объединить результаты !!)
  • когда продукт обновляется или создается, вам нужно обновить свой индекс (здесь есть процесс, чтобы создать дополнительные части индекса и затем объединить индексы)
  • если у вас сайт с высоким трафиком и существует возможность нескольких поисков, происходящих в один и тот же момент, вам нужно создать оболочку, которая может выполнять поиск по нескольким дублирующимся индексам (или наборам индексов) (подумайте шаблон синглтона здесь), так как индекс может быть доступен (открыт) только для одного поиска за один раз

Это отличная платформа. Сначала мы попытались использовать поиск по свободному тексту и обнаружили, что создавать индексы, обновлять их и управлять ими очень сложно. Поиски были не намного быстрее, чем стандартный поиск SQL. Они обеспечили некоторую гибкость в поисковом запросе ... но даже это бледнеет по сравнению с мощью Lucene!

...