Стратегия построения поисковой индексации ASP.NET - PullRequest
1 голос
/ 21 сентября 2010

Это то, что я планирую сделать, и я буду признателен за чей-либо вклад:

Я создал форум в Asp.net MVC и теперь хочу добавить Lucene.Net для поиска.Мой план состоит в том, чтобы запускать поток построителя индекса каждые 5-10 минут, чтобы обновлять поисковый индекс с изменениями, внесенными в каждое обсуждение.

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

Это хорошо?Может кто-нибудь предложить лучший способ постепенного индексирования изменений в приложении форума?

1 Ответ

1 голос
/ 21 сентября 2010

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

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

Если для индексирования больше нет элементов, поток будет спать в течение 5 минут (а затем повторно проверять изменения, когда он просыпается).

Таким образом, вы можете быть уверены, что за один раз будет изменяться только один клиент. Это никогда не потребует много ресурсов ЦП, как это может быть в случае, если вы каким-то образом неправильно управляете таймером или вдруг получаете поток сообщений, и будут масштабироваться по мере роста вашего форума без необходимости время от времени корректировать интервал индексации. 1007 *

Вам нужно будет следить за здоровьем Нити.

...