Я пытаюсь создать прототип приложения индексирования / поиска, которое использует очень нестабильные источники данных индексации (форумы, социальные сети и т. Д.), Вот некоторые требования к производительности,
Очень быстровремя оборота (под этим я подразумеваю, что любые новые данные (например, новое сообщение на форуме) должны быть доступны в результатах поиска очень скоро (менее минуты))
Мне нужно регулярно отбрасывать старые документы, чтобы убедиться, что результаты поиска не датированы.
И последнее, но не менее важное: приложение поиска должно реагировать.(задержка порядка 100 миллисекунд и должна поддерживать не менее 10 кадров в секунду)
Все требования, которые у меня есть в настоящее время, могут быть выполнены без использования Lucene (и это позволило бы мнеудовлетворить все 1,2 и 3), но в будущем я ожидаю другие требования (например, релевантность поиска и т. д.), которые Lucene упростит для реализации.Однако, поскольку Lucene разработан для вариантов использования, гораздо более сложных, чем тот, над которым я сейчас работаю, мне трудно удовлетворять моим требованиям к производительности.
Вот несколько вопросов,
а.Я прочитал, что метод optimize () в классе IndexWriter стоит дорого, и его не следует использовать приложениям, которые часто обновляются. Какие есть альтернативы?
b.Чтобы делать постепенные обновления, мне нужно продолжать фиксировать новые данные, а также обновлять программу чтения индекса, чтобы убедиться, что в ней есть новые данные.Это повлияет на 1 и 3 выше.Должен ли я попробовать дубликаты индексов?Каковы некоторые общие подходы к решению этой проблемы?
c.Я знаю, что Lucene предоставляет метод удаления, который позволяет вам удалить все документы, которые соответствуют определенному запросу, в моем случае мне нужно удалить все документы, которые старше определенного возраста, теперь один вариант - добавить поле даты к каждомудокумент и использовать это, чтобы удалить документы позже.Можно ли выполнять диапазонные запросы по идентификаторам документов (я могу создать собственное поле идентификатора, поскольку я думаю, что поле, созданное lucene, постоянно меняется), чтобы удалить документы?Это быстрее, чем сравнивать даты, представленные в виде строк?
Я знаю, что это очень открытые вопросы, поэтому я не ищу подробный ответ, я постараюсь рассматривать все ваши ответы как предложения и использовать их для информирования моего дизайна.Спасибо!Пожалуйста, дайте мне знать, если вам нужна другая информация.