Grails: Lucene, конструктор запросов Compass и диапазоны дат

#grails #lucene #searchable #compass-lucene

#grails #lucene #доступен поиск #compass-lucene

Вопрос:

У меня есть плагин с возможностью поиска, работающий с моим проектом grails. У меня это индексирует 4 разные таблицы на работе. К сожалению, в каждой таблице есть поле даты, которое называется по-разному. Некоторые из них называются createdAt, некоторые — publishedOn и т.д…

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

Ответ №1:

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

Итак, предположим, что у вас есть класс со свойством ‘publishedOn’, но вы хотите, чтобы это свойство было доступно для поиска как ‘publishedOn’, так и ‘createdAt’. Вы могли бы сделать что-то вроде следующего:

 class ADomainClass {
    Date publishedOn

    static searchable = {
       'publishedOn' format:'yyyyMMdd'
       'publishedOn' name: 'createdAt', format 'yyyyMMdd'
    }
}
  

Если вы хотите, чтобы он был доступен для поиска только как ‘createdAt’, тогда просто оставьте первую запись ‘для поиска’.