Как получить результаты по диапазону дат и отсортировать их с помощью SOLR с ColdFusion 9.0.1? - PullRequest
0 голосов
/ 22 апреля 2011

Я использую ColdFusion 9.0.1 и интегрированную систему полнотекстового поиска SOLR.

У меня есть даты, хранящиеся в моей базе данных SQL Server в качестве полей даты и времени для предстоящих событий.Я взял эти записи и вставил их в коллекцию SOLR, где поля custom3 и custom4 являются датами dateStart и dateEnd соответственно.Пользователи хотят запрашивать коллекцию по диапазону дат и сортировать по ближайшей дате.

Первый вопрос: Как установить тип данных для полей custom1-4?Или мы можем?Исходя из этого поста, Оптимизация Solr для сортировки , для лучшей производительности в поле должно быть задано либо tdate, либо дата, чем строка.Или SOLR автоматически устанавливает для поля правильный тип данных, основанный на этом сообщении, Сортировка по дате в задачах производительности Solr / Lucene ?

Второй вопрос: Каккритерии поиска будут структурированы, чтобы тянуть записи?Как, например, между 1 мая 2011 года и 31 июля 2011 года?

1 Ответ

1 голос
/ 22 апреля 2011

Я не говорю слишком многим, но для вас, я считаю, пришло время отказаться от CFINDEX / CFSEARCH и начать использовать Solr напрямую.

Реализация CF построена для индексации большого блока текста с некоторыми атрибутами, а не с запросом. Если вы начнете использовать Solr напрямую, вы сможете создать свою собственную схему и гораздо более детально контролировать работу своего поиска. Да, внедрение займет больше времени, но вам понравятся результаты. Фильтрация по дате - это только начало.

Вот краткий обзор шагов:

  1. Создать новый индекс, используя CFAdmin. Это простой способ создать все нужные вам файлы.
  2. Изменить схему. Схема находится в [cfroot] / solr / multicore / [имя вашего индекса] / conf /
  3. Верхняя половина схемы: <types>. Это определяет все типы данных, которые вы можете использовать. Нижняя половина - <fields>, и именно здесь вы будете вносить большинство своих изменений. Это довольно просто, как стол. Создайте поле для каждого «столбца», который вы хотите включить. «индексированный» означает, что вы хотите сделать это поле доступным для поиска. «сохраненный» означает, что вы хотите сохранить точные данные, чтобы вы могли использовать их для отображения результатов. Поскольку я использую ORM CF9, я не храню ничего кроме первичного ключа и использую loadEntityByPK () на своей странице результатов.
  4. После изменения схемы необходимо перезапустить службу / демон solr.
  5. Используйте http://cfsolrlib.riaforge.org/ для индексации ваших данных (метод добавления - это метод стиля «вставить или изменить») и выполнить поиск.
  6. Чтобы выполнить поиск, посмотрите этот пример. Он показывает, как сортировать и фильтровать по дате. Я не проверял это, поэтому формат дат может быть неправильным, но вы поймете идею. http://pastebin.com/eBBYkvCW

Извините, это ответ настолько общий, надеюсь, я смогу помочь вам выбрать правильный путь здесь :)

...