Grails: Lucene, Compass Query Builder and date ranges

986 Views Asked by At

I have the searchable plugin working with my grails project. I have it indexing 4 different tables at work. Unfortunately, each table has a date field that is named differently. Some are named createdAt, some named publishedOn, etc...

Within my search, I need to get items that are within a specific date range out of those fields. Is there a way to do this? I've seen one specific instance in the documentation for the plugin, but it doesn't take into account different field names like I have to deal with.

1

There are 1 best solutions below

0
On BEST ANSWER

you can configure your domain classes to override or provide additional Lucene index entries for a property under different names.

So, suppose that you have a class with a 'publishedOn' property, but you want that property to be searchable as both 'publishedOn' and 'createdAt'. You would do something like the following:

class ADomainClass {
    Date publishedOn

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

If you only want it to be searchable as 'createdAt', then just leave out the first 'searchable' entry.