Рекомендации по внедрению в Lucene поиск на сайте электронной коммерции asp.net
-
06-07-2019 - |
Вопрос
Мне было поручено запустить поисковый сервис на сайте электронной коммерции.В настоящее время он использует полнотекстовое индексирование на sql server, что не идеально, поскольку оно медленное и не настолько гибкое.
Как бы вы посоветовали мне подойти к замене этого на lucene?Под этим я подразумеваю, как бы я изначально загрузил все данные в индексы и как бы они поддерживались?в моих методах "вставить продукт", могу ли я также вставить его в индекс?
любая информация очень поможет!
Решение
В настоящее время я использую Solr, который построен на основе Lucene, в качестве поисковой системы для одного из моих проектов электронной коммерции. Это прекрасно работает. Р>
http://lucene.apache.org/solr/
Кроме того, чтобы поддерживать синхронизацию продуктов между БД и Solr, вы можете либо создать свой собственный " sweeper " или реализовать DataImportHandler в Solr. Р>
http://wiki.apache.org/solr/DataImportHandler
Мы создаем наш собственный механизм очистки, который через некоторое время читает представление БД и проверяет, есть ли новые продукты или какие-либо данные о продуктах были обновлены. Это метод грубой силы, и я бы хотел знать о DataImportHandler раньше. Р>
Аспекты также являются действительно мощной частью Solr. Я настоятельно рекомендую использовать их.
Другие советы
Если вы решите использовать Lucene.NET для поиска, вам необходимо выполнить некоторые из следующих действий:
- создайте свой первоначальный индекс, выполнив итерацию по всем вашим записям и введя в свой индекс данные, которые вы хотите выполнить поиск
- если количество записей и данных, которые вы записываете в свои индексы, приводит к большим индексам, тогда подумайте о том, чтобы поместить их в несколько индексов (это означает, что вам придется создать более сложную программу поиска, поскольку вам нужно выполнить поиск по каждому индексу, а затем объединить результаты !!)
- когда продукт обновляется или создается, вам необходимо обновить свой индекс (здесь есть процесс создания дополнительных частей индекса, а затем объединения индексов).
- если у вас сайт с высокой посещаемостью и существует вероятность одновременного выполнения нескольких поисковых запросов, вам нужно создать оболочку, которая может выполнять поиск для вас по нескольким повторяющимся индексам (или наборам индексов) (подумайте о шаблоне singleton здесь), поскольку к индексу можно получить доступ (открыть) только для одного поиска за раз
Это отличная платформа.Сначала мы попытались использовать поиск по свободному тексту и обнаружили, что создавать индексы, обновлять их и управлять ими довольно сложно.Поиск был не намного быстрее, чем стандартный sql-поиск.Они действительно обеспечивали некоторую гибкость в поисковых запросах ... но даже это меркнет по сравнению с мощью Lucene!