[562] | 1 | /** |
---|
| 2 | * This {@link groovy.util.ConfigObject} script provides Grails Searchable Plugin configuration. |
---|
| 3 | * |
---|
| 4 | * You can use the "environments" section at the end of the file to define per-environment |
---|
| 5 | * configuration. |
---|
| 6 | * |
---|
| 7 | * Note it is NOT required to add a reference to this file in Config.groovy; it is loaded by |
---|
| 8 | * the plugin itself. |
---|
| 9 | * |
---|
| 10 | * Available properties in the binding are: |
---|
| 11 | * |
---|
| 12 | * @param userHome The current user's home directory. |
---|
| 13 | * Same as System.properties['user.home'] |
---|
| 14 | * @param appName The Grails environment (ie, "development", "test", "production"). |
---|
| 15 | * Same as System.properties['grails.env'] |
---|
| 16 | * @param appVersion The version of your application |
---|
| 17 | * @param grailsEnv The Grails environment (ie, "development", "test", "production"). |
---|
| 18 | * Same as System.properties['grails.env'] |
---|
| 19 | * |
---|
| 20 | * You can also use System.properties to refer to other JVM properties. |
---|
| 21 | * |
---|
| 22 | * This file is created by "grails install-searchable-config", and replaces |
---|
| 23 | * the previous "SearchableConfiguration.groovy" |
---|
| 24 | */ |
---|
| 25 | searchable { |
---|
| 26 | |
---|
| 27 | /** |
---|
| 28 | * The location of the Compass index |
---|
| 29 | * |
---|
| 30 | * Examples: "/home/app/compassindex", "ram://app-index" or null to use the default |
---|
| 31 | * |
---|
| 32 | * The default is "${user.home}/.grails/projects/${app.name}/searchable-index/${grails.env}" |
---|
| 33 | */ |
---|
[598] | 34 | // Pickup the Tomcat/Catalina work directory else use the current or temp dir. |
---|
[562] | 35 | def catalinaBase = System.properties.getProperty('catalina.base') |
---|
[598] | 36 | def fs = File.separator |
---|
| 37 | def indexDirectory = catalinaBase ? "${catalinaBase}${fs}work${fs}Lucene${fs}" : "Lucene${fs}" |
---|
[562] | 38 | |
---|
[598] | 39 | compassConnection = new File("${indexDirectory}${appName}").absolutePath |
---|
[562] | 40 | |
---|
| 41 | /** |
---|
| 42 | * Any settings you wish to pass to Compass |
---|
| 43 | * |
---|
| 44 | * Use this to configure custom/override default analyzers, query parsers, eg |
---|
| 45 | * |
---|
| 46 | * Map compassSettings = [ |
---|
| 47 | * 'compass.engine.analyzer.german.type': 'German' |
---|
| 48 | * ] |
---|
| 49 | * |
---|
| 50 | * gives you an analyzer called "german" you can then use in mappings and queries, like |
---|
| 51 | * |
---|
| 52 | * class Book { |
---|
| 53 | * static searchable = { content analyzer: 'german' } |
---|
| 54 | * String content |
---|
| 55 | * } |
---|
| 56 | * |
---|
| 57 | * Book.search("unter", analyzer: 'german') |
---|
| 58 | * |
---|
| 59 | * Documentation for Compass settings is here: http://www.compass-project.org/docs/2.1.0M2/reference/html/core-settings.html |
---|
| 60 | */ |
---|
| 61 | compassSettings = [:] |
---|
| 62 | |
---|
| 63 | /** |
---|
| 64 | * Default mapping property exclusions |
---|
| 65 | * |
---|
| 66 | * No properties matching the given names will be mapped by default |
---|
| 67 | * ie, when using "searchable = true" |
---|
| 68 | * |
---|
| 69 | * This does not apply for classes using "searchable = [only/except: [...]]" |
---|
| 70 | * or mapping by closure |
---|
| 71 | */ |
---|
| 72 | defaultExcludedProperties = ["password"] |
---|
| 73 | |
---|
| 74 | /** |
---|
| 75 | * Default property formats |
---|
| 76 | * |
---|
| 77 | * Value is a Map between Class and format string, eg |
---|
| 78 | * |
---|
| 79 | * [(Date): "yyyy-MM-dd'T'HH:mm:ss"] |
---|
| 80 | * |
---|
| 81 | * Only applies to class properties mapped as "searchable properties", which are typically |
---|
| 82 | * simple class types that can be represented as Strings (rather than references |
---|
| 83 | * or components) AND only required if overriding the built-in format. |
---|
| 84 | */ |
---|
| 85 | defaultFormats = [:] |
---|
| 86 | |
---|
| 87 | /** |
---|
| 88 | * Set default options for each SearchableService/Domain-class method, by method name. |
---|
| 89 | * |
---|
| 90 | * These can be overriden on a per-query basis by passing the method a Map of options |
---|
| 91 | * containing those you want to override. |
---|
| 92 | * |
---|
| 93 | * You may want to customise the options used by the search method, which are: |
---|
| 94 | * |
---|
| 95 | * @param reload whether to reload domain class instances from the DB: true|false |
---|
| 96 | * If true, the search will be slower but objects will be associated |
---|
| 97 | * with the current Hibernate session |
---|
| 98 | * @param escape whether to escape special characters in string queries: true|false |
---|
| 99 | * @param offset the 0-based hit offset of the first page of results. |
---|
| 100 | * Normally you wouldn't change it from 0, it's only here because paging |
---|
| 101 | * works by using an offset + max combo for a specific page |
---|
| 102 | * @param max the page size, for paged search results |
---|
| 103 | * @param defaultOperator if the query does not otherwise indicate, then the default operator |
---|
| 104 | * applied: "or" or "and". |
---|
| 105 | * If "and" means all terms are required for a match, if "or" means |
---|
| 106 | * any term is required for a match |
---|
| 107 | * @param suggestQuery if true and search method is returning a search-result object |
---|
| 108 | * (rather than a domain class instance, list or count) then a |
---|
| 109 | * "suggestedQuery" property is also added to the search-result. |
---|
| 110 | * This can also be a Map of options as supported by the suggestQuery |
---|
| 111 | * method itself |
---|
| 112 | * |
---|
| 113 | * For the options supported by other methods, please see the documentation |
---|
| 114 | * http://grails.org/Searchable+Plugin |
---|
| 115 | */ |
---|
| 116 | defaultMethodOptions = [ |
---|
| 117 | search: [reload: false, escape: false, offset: 0, max: 10, defaultOperator: "and"], |
---|
| 118 | suggestQuery: [userFriendly: true] |
---|
| 119 | ] |
---|
| 120 | |
---|
| 121 | /** |
---|
| 122 | * Should changes made through GORM/Hibernate be mirrored to the index |
---|
| 123 | * automatically (using Compass::GPS)? |
---|
| 124 | * |
---|
| 125 | * If false, you must manage the index manually using index/unindex/reindex |
---|
| 126 | */ |
---|
[571] | 127 | mirrorChanges = false |
---|
[562] | 128 | |
---|
| 129 | /** |
---|
| 130 | * Should the database be indexed at startup (using Compass:GPS)? |
---|
| 131 | * |
---|
| 132 | * Possible values: true|false|"fork" |
---|
| 133 | * |
---|
| 134 | * The value may be a boolean true|false or a string "fork", which means true, |
---|
| 135 | * and fork a thread for it |
---|
| 136 | * |
---|
| 137 | * If you use BootStrap.groovy to insert your data then you should use "true", |
---|
| 138 | * which means do a non-forking, otherwise "fork" is recommended |
---|
| 139 | */ |
---|
[571] | 140 | bulkIndexOnStartup = false |
---|
[562] | 141 | |
---|
| 142 | /** |
---|
| 143 | * Should index locks be removed (if present) at startup? |
---|
| 144 | */ |
---|
| 145 | releaseLocksOnStartup = true |
---|
| 146 | } |
---|
| 147 | |
---|
| 148 | // per-environment settings |
---|
| 149 | environments { |
---|
| 150 | development { |
---|
| 151 | searchable { |
---|
| 152 | // development is default; inherits from above |
---|
| 153 | } |
---|
| 154 | } |
---|
| 155 | |
---|
| 156 | test { |
---|
| 157 | searchable { |
---|
| 158 | // disable bulk index on startup |
---|
| 159 | bulkIndexOnStartup = false |
---|
| 160 | |
---|
| 161 | // use faster in-memory index |
---|
| 162 | compassConnection = "ram://test-index" |
---|
| 163 | } |
---|
| 164 | } |
---|
| 165 | |
---|
| 166 | production { |
---|
| 167 | searchable { |
---|
| 168 | // add your production settings here |
---|
| 169 | } |
---|
| 170 | } |
---|
| 171 | } |
---|