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