2009-11-30 13 views
0

Dans mon application Grails, j'utilise le plugin interrogeable pour la recherche/indexation. Je veux écrire une requête Compass/Lucene qui implique plusieurs classes de domaine. Dans cette requête lorsque je veux faire référence à l'identifiant d'une classe, je ne peux pas simplement utiliser 'id' car toutes les classes ont une propriété 'id'. À l'heure actuelle, je travaille autour de ce problème en ajoutant la propriété suivante à une classe FooGrails plugin interrogeable

public Long getFooId() { 
    return id 
} 
static transients = ['fooId'] 

Puis, quand je veux me référer à l'ID de Foo dans une requête que j'utilise « fooid ». Est-il possible de fournir un alias pour une propriété dans le mappage interrogeable plutôt que d'ajouter une propriété à la classe?

Répondre

1

je découvre enfin que c'est la façon de le faire:

static searchable = { 
    id: name 'fooId' 
} 
2

Vous pouvez donner un nom plus spécifique à votre propriété id. Voir this page pour savoir comment faire.

0

Merci! Cela fonctionnerait très bien, c'est-à-dire, si je pouvais passer outre les erreurs d'OOM que le serveur d'application semble lancer chaque fois que le plugin Searchable est installé. Ceux-ci sont bouillonnent via:

org.compass.gps.CompassGpsException: Failed to index, execution exception; nested exception is java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java heap space

Quelqu'un at-il configuré sa Searchable.groovy dans Grails-app/conf pour exécuter un fichier strict: /// ou mmap: // configuration en utilisant uniquement pas tas, et l'indexation dire une fois ou deux fois par jour? La recherche est au-delà d'une bonne idée - mais le coût de l'utilisation de la mise en miroir des bases de données dans Grails (avec Oracle 10g) semble nécessiter beaucoup de mémoire.

vraiment peu de domaines à la recherche (4) petite base de données, 1-2gb peut-être pour cette application.

+0

Transforme c'était juste car il y avait plusieurs applications Grails déployées en même instance Tomcat - vient d'augmenter PermSize et définir l'indice à bulkIndexOnStartup = « fourchette » et a travaillé tout de suite. – mikesalera