[ANN] Searchable Plugin 0.4 ships

View: New views
9 Messages — Rating Filter:   Alert me  

[ANN] Searchable Plugin 0.4 ships

by Maurice Nicholson-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Searchable Plugin 0.4 is finally here!

I guess most of you have been using the 0.4-SNAPSHOT for a while, so here's what's happened recently:

* Upgraded to Compass 1.2.1 which includes Lucene 2.2
* Highlighting: http://grails.org/Searchable+Plugin+-+Searching#SearchablePlugin-Searching-Highlighting
* Term Frequencies: http://grails.org/Searchable+Plugin+-+Searching#SearchablePlugin-Searching-termFreqs
* The start of a mapping DSL: http://grails.org/Searchable+Plugin+-+Mapping#SearchablePlugin-Mapping-MappingDSL
* Better default mapping of embedded domain classes: http://grails.org/Searchable+Plugin+-+Mapping#SearchablePlugin-Mapping-Defaultmappingrules

Cheers,
Maurice


Parent Message unknown Re: [ANN] Searchable Plugin 0.4 ships

by Darryl Pentz :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Some parts of this message have been removed. Learn more about Nabble's security policy.
*Darryl bows before the master*

Thanks Maurice, the Searchable plugin is, I think, the most powerful and impressive of all the Grails plugins and these improvements only serve to entrench that fact.

Regards,
Darryl

----- Original Message ----
From: Maurice Nicholson <me@...>
To: user@...
Sent: Sunday, March 16, 2008 8:04:19 PM
Subject: [grails-user] [ANN] Searchable Plugin 0.4 ships

Searchable Plugin 0.4 is finally here!

I guess most of you have been using the 0.4-SNAPSHOT for a while, so here's what's happened recently:

* Upgraded to Compass 1.2.1 which includes Lucene 2.2
* Highlighting: http://grails.org/Searchable+Plugin+-+Searching#SearchablePlugin-Searching-Highlighting
* Term Frequencies: http://grails.org/Searchable+Plugin+-+Searching#SearchablePlugin-Searching-termFreqs
* The start of a mapping DSL: http://grails.org/Searchable+Plugin+-+Mapping#SearchablePlugin-Mapping-MappingDSL
* Better default mapping of embedded domain classes: http://grails.org/Searchable+Plugin+-+Mapping#SearchablePlugin-Mapping-Defaultmappingrules

Cheers,
Maurice




Never miss a thing. Make Yahoo your homepage.

Re: [ANN] Searchable Plugin 0.4 ships

by dahernan :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

My favorite plugin :D

Thanks Maurice.

On 16/03/2008, Darryl Pentz <djpentz@...> wrote:

>
> *Darryl bows before the master*
>
> Thanks Maurice, the Searchable plugin is, I think, the most powerful and
> impressive of all the Grails plugins and these improvements only serve to
> entrench that fact.
>
> Regards,
> Darryl
>
>
> ----- Original Message ----
> From: Maurice Nicholson <me@...>
> To: user@...
> Sent: Sunday, March 16, 2008 8:04:19 PM
> Subject: [grails-user] [ANN] Searchable Plugin 0.4 ships
>
>  Searchable Plugin 0.4 is finally here!
>
> I guess most of you have been using the 0.4-SNAPSHOT for a while, so here's
> what's happened recently:
>
> * Upgraded to Compass 1.2.1 which includes Lucene 2.2
> * Highlighting:
> http://grails.org/Searchable+Plugin+-+Searching#SearchablePlugin-Searching-Highlighting
>  * Term Frequencies:
> http://grails.org/Searchable+Plugin+-+Searching#SearchablePlugin-Searching-termFreqs
> * The start of a mapping DSL:
> http://grails.org/Searchable+Plugin+-+Mapping#SearchablePlugin-Mapping-MappingDSL
>  * Better default mapping of embedded domain classes:
> http://grails.org/Searchable+Plugin+-+Mapping#SearchablePlugin-Mapping-Defaultmappingrules
>
> Cheers,
> Maurice
>
>
>
>  ________________________________
> Never miss a thing. Make Yahoo your homepage.

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



Re: [ANN] Searchable Plugin 0.4 ships

by Barzilai Spinak-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Computed constants.
Hi Maurice, congratulations for the final release!
I still had lots of errors from the SVN version of a couple of days ago,
but I'm gonna try this one.
I was reading the updated documentation and I found the section about
constants.
I understand that you can index "custom" mappings to a domain instance,
that's very useful.
What I was wondering is whether those constant mappings could be
computed. That is, computed out of other properties (for example a
concatenation of two properties, or maybe a substring of one of them
plus the temperature in Madagascar at that time... some crazy example :-))
Maybe it could accept a clousre, like:
    constant  name: "myComputed" ,   value: {
"bla"+tempMadagascar+(someProp*3) }

I guess those constants are indexed when the object is saved/updated, so
all the values are already there.

BarZ


Maurice Nicholson wrote:

> Searchable Plugin 0.4 is finally here!
>
> I guess most of you have been using the 0.4-SNAPSHOT for a while, so
> here's what's happened recently:
>
> * Upgraded to Compass 1.2.1 which includes Lucene 2.2
> * Highlighting:
> http://grails.org/Searchable+Plugin+-+Searching#SearchablePlugin-Searching-Highlighting
> * Term Frequencies:
> http://grails.org/Searchable+Plugin+-+Searching#SearchablePlugin-Searching-termFreqs
> * The start of a mapping DSL:
> http://grails.org/Searchable+Plugin+-+Mapping#SearchablePlugin-Mapping-MappingDSL
> * Better default mapping of embedded domain classes:
> http://grails.org/Searchable+Plugin+-+Mapping#SearchablePlugin-Mapping-Defaultmappingrules
>
> Cheers,
> Maurice
>


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



Re: [ANN] Searchable Plugin 0.4 ships

by Maurice Nicholson-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

if you do get errors with the latest version please shout :-)

yeah this is on the roadmap (in my head); the closure would be given an instance of the domain class so you could refer to the instance with it, eg,

    name: "bugId", value: { -> "${it.project.shortName}-${it.number}" }

Compass has the concept of "dynamic-meta-data" for this but with that you basically define the expression as a string, which can get cumbersome for large expressions, because when configuring the mapping with native compass you're either in XML-land or annotation -land, neither of which are actually code :-)

Regarding that trying to marshall null id bug you found, I could reproduce it easily with a Grails app, but then when I tried reproducing it in a paired down Java+Hibernate+Compass Test case, well of course I got a different problem! I think there are many more moving parts in the Grails app that I'm not yet aware of, so I need to do more investigation, but it's now the top priority for me.


On 17/03/2008, Barzilai Spinak <barcho@...> wrote:
Computed constants.
Hi Maurice, congratulations for the final release!
I still had lots of errors from the SVN version of a couple of days ago,
but I'm gonna try this one.
I was reading the updated documentation and I found the section about
constants.
I understand that you can index "custom" mappings to a domain instance,
that's very useful.
What I was wondering is whether those constant mappings could be
computed. That is, computed out of other properties (for example a
concatenation of two properties, or maybe a substring of one of them
plus the temperature in Madagascar at that time... some crazy example :-))
Maybe it could accept a clousre, like:
    constant  name: "myComputed" ,   value: {
"bla"+tempMadagascar+(someProp*3) }

I guess those constants are indexed when the object is saved/updated, so
all the values are already there.

BarZ



Maurice Nicholson wrote:
> Searchable Plugin 0.4 is finally here!
>
> I guess most of you have been using the 0.4-SNAPSHOT for a while, so
> here's what's happened recently:
>
> * Upgraded to Compass 1.2.1 which includes Lucene 2.2
> * Highlighting:
> http://grails.org/Searchable+Plugin+-+Searching#SearchablePlugin-Searching-Highlighting
> * Term Frequencies:
> http://grails.org/Searchable+Plugin+-+Searching#SearchablePlugin-Searching-termFreqs
> * The start of a mapping DSL:
> http://grails.org/Searchable+Plugin+-+Mapping#SearchablePlugin-Mapping-MappingDSL
> * Better default mapping of embedded domain classes:
> http://grails.org/Searchable+Plugin+-+Mapping#SearchablePlugin-Mapping-Defaultmappingrules
>
> Cheers,
> Maurice
>



---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email




Re: [ANN] Searchable Plugin 0.4 ships

by Maurice Nicholson-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Some parts of this message have been removed. Learn more about Nabble's security policy.
Thanks mate, glad you like it!

But I reckon it depends on the app you're writing as to which one(s) you find the most useful :-)

On 16/03/2008, Darryl Pentz <djpentz@...> wrote:
*Darryl bows before the master*

Thanks Maurice, the Searchable plugin is, I think, the most powerful and impressive of all the Grails plugins and these improvements only serve to entrench that fact.

Regards,
Darryl


----- Original Message ----
From: Maurice Nicholson <me@...>
To: user@...
Sent: Sunday, March 16, 2008 8:04:19 PM
Subject: [grails-user] [ANN] Searchable Plugin 0.4 ships

Searchable Plugin 0.4 is finally here!

I guess most of you have been using the 0.4-SNAPSHOT for a while, so here's what's happened recently:

* Upgraded to Compass 1.2.1 which includes Lucene 2.2
* Highlighting: http://grails.org/Searchable+Plugin+-+Searching#SearchablePlugin-Searching-Highlighting
* Term Frequencies: http://grails.org/Searchable+Plugin+-+Searching#SearchablePlugin-Searching-termFreqs
* The start of a mapping DSL: http://grails.org/Searchable+Plugin+-+Mapping#SearchablePlugin-Mapping-MappingDSL
* Better default mapping of embedded domain classes: http://grails.org/Searchable+Plugin+-+Mapping#SearchablePlugin-Mapping-Defaultmappingrules

Cheers,
Maurice




Never miss a thing. Make Yahoo your homepage.


Re: [ANN] Searchable Plugin 0.4 ships

by Barzilai Spinak-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Well. same problems with the new version :-(
Clean project, Grails 1.0.1
Two domain objects in a bi-directional one-to-many, very simple and
classic example.

class User {
  static searchable =  true
  String name
  static hasMany = [albums:Album]
}

class Album {
  static searchable = true
  String title

  User   owner
  static belongsTo= User
}
------

The following code fails when saving the user:

     def u1= new User(name:'barcho king')

     def a1= new Album(title:'el album del pasto en el universo')
     def a2= new Album(title:'bart the king nenene')

     u1.addToAlbums(a1).addToAlbums(a2)
     u1.save()    // FAILS HERE!

The User is actually inserted into the database:
  -->   insert into user (version, name) values (0, 'barcho king')

But I think the error happens when cascading down to the albums:
(example trace from within a grails controller/action, but the same
problem happens from the grails console and the BootStrap)

[102688] errors.GrailsExceptionResolver
org.compass.gps.device.hibernate.HibernateGpsDeviceException:
{hibernate}: Failed while creating [User : 1]; nested exception is
org.compass.core.converter.ConversionException: Trying to marshall a
null id [id]
org.codehaus.groovy.runtime.InvokerInvocationException:
org.compass.gps.device.hibernate.HibernateGpsDeviceException:
{hibernate}: Failed while creating [User : 1]; nested exception is
org.compass.core.converter.ConversionException: Trying to marshall a
null id [id]
[...]
        at
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
[...]
Caused by: org.compass.gps.device.hibernate.HibernateGpsDeviceException:
{hibernate}: Failed while creating [User : 1]; nested exception is
org.compass.core.converter.ConversionException: Trying to marshall a
null id [id]
        at
org.compass.gps.device.hibernate.dep.Hibernate3GpsDevice$Hibernate3GpsDevicePostInsert.onPostInsert(Hibernate3GpsDevice.java:186)
        at $Proxy6.saveOrUpdate(Unknown Source)
[...]
        at UserController$_closure2.doCall(UserController.groovy:28)
        at UserController$_closure2.doCall(UserController.groovy)
Caused by: org.compass.core.converter.ConversionException: Trying to
marshall a null id [id]
        at
org.compass.core.converter.mapping.osem.ClassMappingConverter.convertId(ClassMappingConverter.java:334)
        at
org.compass.core.converter.mapping.osem.ClassMappingConverter.marshallIds(ClassMappingConverter.java:312)
        at
org.compass.core.marshall.DefaultMarshallingStrategy.marshallIds(DefaultMarshallingStrategy.java:83)
        at
org.compass.core.converter.mapping.osem.ReferenceMappingConverter.doMarshall(ReferenceMappingConverter.java:71)
        at
org.compass.core.converter.mapping.osem.AbstractRefAliasMappingConverter.marshall(AbstractRefAliasMappingConverter.java:48)
        at
org.compass.core.converter.mapping.osem.CollectionMappingConverter.marshallIterateData(CollectionMappingConverter.java:52)
        at
org.compass.core.converter.mapping.osem.AbstractCollectionMappingConverter.marshall(AbstractCollectionMappingConverter.java:73)
        at
org.compass.core.converter.mapping.osem.ClassMappingConverter.doMarshall(ClassMappingConverter.java:155)
        at
org.compass.core.converter.mapping.osem.ClassMappingConverter.marshall(ClassMappingConverter.java:63)
        at
org.compass.core.marshall.DefaultMarshallingStrategy.marshall(DefaultMarshallingStrategy.java:150)
        at
org.compass.core.impl.DefaultCompassSession.create(DefaultCompassSession.java:276)
        at
org.compass.gps.device.hibernate.dep.Hibernate3GpsDevice$Hibernate3GpsDevicePostInsert$1.doInCompassWithoutResult(Hibernate3GpsDevice.java:179)
        at
org.compass.core.CompassCallbackWithoutResult.doInCompass(CompassCallbackWithoutResult.java:29)
        at
org.compass.core.CompassTemplate.execute(CompassTemplate.java:137)
        at
org.compass.core.CompassTemplate.execute(CompassTemplate.java:119)
        at
org.compass.gps.impl.SingleCompassGps.executeForMirror(SingleCompassGps.java:164)
        at
org.compass.gps.device.hibernate.dep.Hibernate3GpsDevice$Hibernate3GpsDevicePostInsert.onPostInsert(Hibernate3GpsDevice.java:175)
        ... 3 more



I've tried to change the User's mapping to:
 static searchable =  {
      albums(component: true)
  }

But then it gives lots of errors when grails starts:

[10266] context.ContextLoader Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating
bean with name 'compassGps': Cannot resolve reference to bean 'compass'
while setting bean property 'compass'; nested
exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'compass': FactoryBean threw exception on
object creation; nested exception is java.lang.NullPointerException

and lots similar to the above.  This *used* to work in the old
(mid-2007) 0.4 snapshot, althouth there was some weird stuff with the
termFreqs, giving higher results than it should. Probably some
double-counting due to the component option.

I've also tried several other options for mappings, with no luck. I even
started to try annotation mapping but it gets too involved and complicated.

Now, I really do wonder how are other people using this plugin if I
can't make it work even for the simplest of examples (taken from the web
page).
I'd really like to use this plugin  :-)

BarZ

Maurice Nicholson wrote:

> if you do get errors with the latest version please shout :-)
>
> yeah this is on the roadmap (in my head); the closure would be given
> an instance of the domain class so you could refer to the instance
> with it, eg,
>
>     name: "bugId", value: { -> "${it.project.shortName}-${it.number}" }
>
> Compass has the concept of "dynamic-meta-data" for this but with that
> you basically define the expression as a string, which can get
> cumbersome for large expressions, because when configuring the mapping
> with native compass you're either in XML-land or annotation -land,
> neither of which are actually code :-)
>
> Regarding that trying to marshall null id bug you found, I could
> reproduce it easily with a Grails app, but then when I tried
> reproducing it in a paired down Java+Hibernate+Compass Test case, well
> of course I got a different problem! I think there are many more
> moving parts in the Grails app that I'm not yet aware of, so I need to
> do more investigation, but it's now the top priority for me.
>
>
> On 17/03/2008, *Barzilai Spinak* <barcho@...
> <mailto:barcho@...>> wrote:
>
>     Computed constants.
>     Hi Maurice, congratulations for the final release!
>     I still had lots of errors from the SVN version of a couple of
>     days ago,
>     but I'm gonna try this one.
>     I was reading the updated documentation and I found the section about
>     constants.
>     I understand that you can index "custom" mappings to a domain
>     instance,
>     that's very useful.
>     What I was wondering is whether those constant mappings could be
>     computed. That is, computed out of other properties (for example a
>     concatenation of two properties, or maybe a substring of one of them
>     plus the temperature in Madagascar at that time... some crazy
>     example :-))
>     Maybe it could accept a clousre, like:
>         constant  name: "myComputed" ,   value: {
>     "bla"+tempMadagascar+(someProp*3) }
>
>     I guess those constants are indexed when the object is
>     saved/updated, so
>     all the values are already there.
>
>     BarZ
>
>
>
>     Maurice Nicholson wrote:
>     > Searchable Plugin 0.4 is finally here!
>     >
>     > I guess most of you have been using the 0.4-SNAPSHOT for a while, so
>     > here's what's happened recently:
>     >
>     > * Upgraded to Compass 1.2.1 which includes Lucene 2.2
>     > * Highlighting:
>     >
>     http://grails.org/Searchable+Plugin+-+Searching#SearchablePlugin-Searching-Highlighting
>     > * Term Frequencies:
>     >
>     http://grails.org/Searchable+Plugin+-+Searching#SearchablePlugin-Searching-termFreqs
>     > * The start of a mapping DSL:
>     >
>     http://grails.org/Searchable+Plugin+-+Mapping#SearchablePlugin-Mapping-MappingDSL
>     > * Better default mapping of embedded domain classes:
>     >
>     http://grails.org/Searchable+Plugin+-+Mapping#SearchablePlugin-Mapping-Defaultmappingrules
>     >
>     > Cheers,
>     > Maurice
>     >
>


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



Re: [ANN] Searchable Plugin 0.4 ships

by Barzilai Spinak-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Well. same problems with the new version :-(
Clean project, Grails 1.0.1
Two domain objects in a bi-directional one-to-many, very simple and
classic example.

class User {
  static searchable =  true
  String name
  static hasMany = [albums:Album]
}

class Album {
  static searchable = true
  String title

  User   owner
  static belongsTo= User
}
------

The following code fails when saving the user:

     def u1= new User(name:'barcho king')

     def a1= new Album(title:'el album del pasto en el universo')
     def a2= new Album(title:'bart the king nenene')

     u1.addToAlbums(a1).addToAlbums(a2)
     u1.save()    // FAILS HERE!

The User is actually inserted into the database:
  -->   insert into user (version, name) values (0, 'barcho king')

But I think the error happens when cascading down to the albums:
(example trace from within a grails controller/action, but the same
problem happens from the grails console and the BootStrap)

[102688] errors.GrailsExceptionResolver
org.compass.gps.device.hibernate.HibernateGpsDeviceException:
{hibernate}: Failed while creating [User : 1]; nested exception is
org.compass.core.converter.ConversionException: Trying to marshall a
null id [id]
org.codehaus.groovy.runtime.InvokerInvocationException:
org.compass.gps.device.hibernate.HibernateGpsDeviceException:
{hibernate}: Failed while creating [User : 1]; nested exception is
org.compass.core.converter.ConversionException: Trying to marshall a
null id [id]
[...]
        at
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
[...]
Caused by: org.compass.gps.device.hibernate.HibernateGpsDeviceException:
{hibernate}: Failed while creating [User : 1]; nested exception is
org.compass.core.converter.ConversionException: Trying to marshall a
null id [id]
        at
org.compass.gps.device.hibernate.dep.Hibernate3GpsDevice$Hibernate3GpsDevicePostInsert.onPostInsert(Hibernate3GpsDevice.java:186)
        at $Proxy6.saveOrUpdate(Unknown Source)
[...]
        at UserController$_closure2.doCall(UserController.groovy:28)
        at UserController$_closure2.doCall(UserController.groovy)
Caused by: org.compass.core.converter.ConversionException: Trying to
marshall a null id [id]
        at
org.compass.core.converter.mapping.osem.ClassMappingConverter.convertId(ClassMappingConverter.java:334)
        at
org.compass.core.converter.mapping.osem.ClassMappingConverter.marshallIds(ClassMappingConverter.java:312)
        at
org.compass.core.marshall.DefaultMarshallingStrategy.marshallIds(DefaultMarshallingStrategy.java:83)
        at
org.compass.core.converter.mapping.osem.ReferenceMappingConverter.doMarshall(ReferenceMappingConverter.java:71)
        at
org.compass.core.converter.mapping.osem.AbstractRefAliasMappingConverter.marshall(AbstractRefAliasMappingConverter.java:48)
        at
org.compass.core.converter.mapping.osem.CollectionMappingConverter.marshallIterateData(CollectionMappingConverter.java:52)
        at
org.compass.core.converter.mapping.osem.AbstractCollectionMappingConverter.marshall(AbstractCollectionMappingConverter.java:73)
        at
org.compass.core.converter.mapping.osem.ClassMappingConverter.doMarshall(ClassMappingConverter.java:155)
        at
org.compass.core.converter.mapping.osem.ClassMappingConverter.marshall(ClassMappingConverter.java:63)
        at
org.compass.core.marshall.DefaultMarshallingStrategy.marshall(DefaultMarshallingStrategy.java:150)
        at
org.compass.core.impl.DefaultCompassSession.create(DefaultCompassSession.java:276)
        at
org.compass.gps.device.hibernate.dep.Hibernate3GpsDevice$Hibernate3GpsDevicePostInsert$1.doInCompassWithoutResult(Hibernate3GpsDevice.java:179)
        at
org.compass.core.CompassCallbackWithoutResult.doInCompass(CompassCallbackWithoutResult.java:29)
        at
org.compass.core.CompassTemplate.execute(CompassTemplate.java:137)
        at
org.compass.core.CompassTemplate.execute(CompassTemplate.java:119)
        at
org.compass.gps.impl.SingleCompassGps.executeForMirror(SingleCompassGps.java:164)
        at
org.compass.gps.device.hibernate.dep.Hibernate3GpsDevice$Hibernate3GpsDevicePostInsert.onPostInsert(Hibernate3GpsDevice.java:175)
        ... 3 more



I've tried to change the User's mapping to:
 static searchable =  {
      albums(component: true)
  }

But then it gives lots of errors when grails starts:

[10266] context.ContextLoader Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating
bean with name 'compassGps': Cannot resolve reference to bean 'compass'
while setting bean property 'compass'; nested
exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'compass': FactoryBean threw exception on
object creation; nested exception is java.lang.NullPointerException

and lots similar to the above.  This *used* to work in the old
(mid-2007) 0.4 snapshot, althouth there was some weird stuff with the
termFreqs, giving higher results than it should. Probably some
double-counting due to the component option.

I've also tried several other options for mappings, with no luck. I even
started to try annotation mapping but it gets too involved and complicated.

Now, I really do wonder how are other people using this plugin if I
can't make it work even for the simplest of examples (taken from the web
page).
I'd really like to use this plugin  :-)

BarZ

Maurice Nicholson wrote:

> if you do get errors with the latest version please shout :-)
>
> yeah this is on the roadmap (in my head); the closure would be given
> an instance of the domain class so you could refer to the instance
> with it, eg,
>
>     name: "bugId", value: { -> "${it.project.shortName}-${it.number}" }
>
> Compass has the concept of "dynamic-meta-data" for this but with that
> you basically define the expression as a string, which can get
> cumbersome for large expressions, because when configuring the mapping
> with native compass you're either in XML-land or annotation -land,
> neither of which are actually code :-)
>
> Regarding that trying to marshall null id bug you found, I could
> reproduce it easily with a Grails app, but then when I tried
> reproducing it in a paired down Java+Hibernate+Compass Test case, well
> of course I got a different problem! I think there are many more
> moving parts in the Grails app that I'm not yet aware of, so I need to
> do more investigation, but it's now the top priority for me.
>
>
> On 17/03/2008, *Barzilai Spinak* <barcho@...
> <mailto:barcho@...>> wrote:
>
>     Computed constants.
>     Hi Maurice, congratulations for the final release!
>     I still had lots of errors from the SVN version of a couple of
>     days ago,
>     but I'm gonna try this one.
>     I was reading the updated documentation and I found the section about
>     constants.
>     I understand that you can index "custom" mappings to a domain
>     instance,
>     that's very useful.
>     What I was wondering is whether those constant mappings could be
>     computed. That is, computed out of other properties (for example a
>     concatenation of two properties, or maybe a substring of one of them
>     plus the temperature in Madagascar at that time... some crazy
>     example :-))
>     Maybe it could accept a clousre, like:
>         constant  name: "myComputed" ,   value: {
>     "bla"+tempMadagascar+(someProp*3) }
>
>     I guess those constants are indexed when the object is
>     saved/updated, so
>     all the values are already there.
>
>     BarZ
>
>
>
>     Maurice Nicholson wrote:
>     > Searchable Plugin 0.4 is finally here!
>     >
>     > I guess most of you have been using the 0.4-SNAPSHOT for a while, so
>     > here's what's happened recently:
>     >
>     > * Upgraded to Compass 1.2.1 which includes Lucene 2.2
>     > * Highlighting:
>     >
>     http://grails.org/Searchable+Plugin+-+Searching#SearchablePlugin-Searching-Highlighting
>     > * Term Frequencies:
>     >
>     http://grails.org/Searchable+Plugin+-+Searching#SearchablePlugin-Searching-termFreqs
>     > * The start of a mapping DSL:
>     >
>     http://grails.org/Searchable+Plugin+-+Mapping#SearchablePlugin-Mapping-MappingDSL
>     > * Better default mapping of embedded domain classes:
>     >
>     http://grails.org/Searchable+Plugin+-+Mapping#SearchablePlugin-Mapping-Defaultmappingrules
>     >
>     > Cheers,
>     > Maurice
>     >
>


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



Re: [ANN] Searchable Plugin 0.4 ships

by Jeroen Gordijn :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I am experiencing the same problem :-(

I am trying to search multiple domain classes, but this prevents me from creating them. Does anyone have a solution for this problem?

Cheers,
Jeroen

Barzilai Spinak-2 wrote:
Well. same problems with the new version :-(
Clean project, Grails 1.0.1
Two domain objects in a bi-directional one-to-many, very simple and
classic example.

class User {
  static searchable =  true
  String name
  static hasMany = [albums:Album]
}

class Album {
  static searchable = true
  String title

  User   owner
  static belongsTo= User
}
------

The following code fails when saving the user:

     def u1= new User(name:'barcho king')

     def a1= new Album(title:'el album del pasto en el universo')
     def a2= new Album(title:'bart the king nenene')

     u1.addToAlbums(a1).addToAlbums(a2)
     u1.save()    // FAILS HERE!

The User is actually inserted into the database:
  -->   insert into user (version, name) values (0, 'barcho king')

But I think the error happens when cascading down to the albums:
(example trace from within a grails controller/action, but the same
problem happens from the grails console and the BootStrap)

[102688] errors.GrailsExceptionResolver
org.compass.gps.device.hibernate.HibernateGpsDeviceException:
{hibernate}: Failed while creating [User : 1]; nested exception is
org.compass.core.converter.ConversionException: Trying to marshall a
null id [id]
org.codehaus.groovy.runtime.InvokerInvocationException:
org.compass.gps.device.hibernate.HibernateGpsDeviceException:
{hibernate}: Failed while creating [User : 1]; nested exception is
org.compass.core.converter.ConversionException: Trying to marshall a
null id [id]
[...]
        at
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
[...]
Caused by: org.compass.gps.device.hibernate.HibernateGpsDeviceException:
{hibernate}: Failed while creating [User : 1]; nested exception is
org.compass.core.converter.ConversionException: Trying to marshall a
null id [id]
        at
org.compass.gps.device.hibernate.dep.Hibernate3GpsDevice$Hibernate3GpsDevicePostInsert.onPostInsert(Hibernate3GpsDevice.java:186)
        at $Proxy6.saveOrUpdate(Unknown Source)
[...]
        at UserController$_closure2.doCall(UserController.groovy:28)
        at UserController$_closure2.doCall(UserController.groovy)
Caused by: org.compass.core.converter.ConversionException: Trying to
marshall a null id [id]
        at
org.compass.core.converter.mapping.osem.ClassMappingConverter.convertId(ClassMappingConverter.java:334)
        at
org.compass.core.converter.mapping.osem.ClassMappingConverter.marshallIds(ClassMappingConverter.java:312)
        at
org.compass.core.marshall.DefaultMarshallingStrategy.marshallIds(DefaultMarshallingStrategy.java:83)
        at
org.compass.core.converter.mapping.osem.ReferenceMappingConverter.doMarshall(ReferenceMappingConverter.java:71)
        at
org.compass.core.converter.mapping.osem.AbstractRefAliasMappingConverter.marshall(AbstractRefAliasMappingConverter.java:48)
        at
org.compass.core.converter.mapping.osem.CollectionMappingConverter.marshallIterateData(CollectionMappingConverter.java:52)
        at
org.compass.core.converter.mapping.osem.AbstractCollectionMappingConverter.marshall(AbstractCollectionMappingConverter.java:73)
        at
org.compass.core.converter.mapping.osem.ClassMappingConverter.doMarshall(ClassMappingConverter.java:155)
        at
org.compass.core.converter.mapping.osem.ClassMappingConverter.marshall(ClassMappingConverter.java:63)
        at
org.compass.core.marshall.DefaultMarshallingStrategy.marshall(DefaultMarshallingStrategy.java:150)
        at
org.compass.core.impl.DefaultCompassSession.create(DefaultCompassSession.java:276)
        at
org.compass.gps.device.hibernate.dep.Hibernate3GpsDevice$Hibernate3GpsDevicePostInsert$1.doInCompassWithoutResult(Hibernate3GpsDevice.java:179)
        at
org.compass.core.CompassCallbackWithoutResult.doInCompass(CompassCallbackWithoutResult.java:29)
        at
org.compass.core.CompassTemplate.execute(CompassTemplate.java:137)
        at
org.compass.core.CompassTemplate.execute(CompassTemplate.java:119)
        at
org.compass.gps.impl.SingleCompassGps.executeForMirror(SingleCompassGps.java:164)
        at
org.compass.gps.device.hibernate.dep.Hibernate3GpsDevice$Hibernate3GpsDevicePostInsert.onPostInsert(Hibernate3GpsDevice.java:175)
        ... 3 more



I've tried to change the User's mapping to:
 static searchable =  {
      albums(component: true)
  }

But then it gives lots of errors when grails starts:

[10266] context.ContextLoader Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating
bean with name 'compassGps': Cannot resolve reference to bean 'compass'
while setting bean property 'compass'; nested
exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'compass': FactoryBean threw exception on
object creation; nested exception is java.lang.NullPointerException

and lots similar to the above.  This *used* to work in the old
(mid-2007) 0.4 snapshot, althouth there was some weird stuff with the
termFreqs, giving higher results than it should. Probably some
double-counting due to the component option.

I've also tried several other options for mappings, with no luck. I even
started to try annotation mapping but it gets too involved and complicated.

Now, I really do wonder how are other people using this plugin if I
can't make it work even for the simplest of examples (taken from the web
page).
I'd really like to use this plugin  :-)

BarZ

Maurice Nicholson wrote:
> if you do get errors with the latest version please shout :-)
>
> yeah this is on the roadmap (in my head); the closure would be given
> an instance of the domain class so you could refer to the instance
> with it, eg,
>
>     name: "bugId", value: { -> "${it.project.shortName}-${it.number}" }
>
> Compass has the concept of "dynamic-meta-data" for this but with that
> you basically define the expression as a string, which can get
> cumbersome for large expressions, because when configuring the mapping
> with native compass you're either in XML-land or annotation -land,
> neither of which are actually code :-)
>
> Regarding that trying to marshall null id bug you found, I could
> reproduce it easily with a Grails app, but then when I tried
> reproducing it in a paired down Java+Hibernate+Compass Test case, well
> of course I got a different problem! I think there are many more
> moving parts in the Grails app that I'm not yet aware of, so I need to
> do more investigation, but it's now the top priority for me.
>
>
> On 17/03/2008, *Barzilai Spinak* <barcho@creacion.com.uy
> <mailto:barcho@creacion.com.uy>> wrote:
>
>     Computed constants.
>     Hi Maurice, congratulations for the final release!
>     I still had lots of errors from the SVN version of a couple of
>     days ago,
>     but I'm gonna try this one.
>     I was reading the updated documentation and I found the section about
>     constants.
>     I understand that you can index "custom" mappings to a domain
>     instance,
>     that's very useful.
>     What I was wondering is whether those constant mappings could be
>     computed. That is, computed out of other properties (for example a
>     concatenation of two properties, or maybe a substring of one of them
>     plus the temperature in Madagascar at that time... some crazy
>     example :-))
>     Maybe it could accept a clousre, like:
>         constant  name: "myComputed" ,   value: {
>     "bla"+tempMadagascar+(someProp*3) }
>
>     I guess those constants are indexed when the object is
>     saved/updated, so
>     all the values are already there.
>
>     BarZ
>
>
>
>     Maurice Nicholson wrote:
>     > Searchable Plugin 0.4 is finally here!
>     >
>     > I guess most of you have been using the 0.4-SNAPSHOT for a while, so
>     > here's what's happened recently:
>     >
>     > * Upgraded to Compass 1.2.1 which includes Lucene 2.2
>     > * Highlighting:
>     >
>     http://grails.org/Searchable+Plugin+-+Searching#SearchablePlugin-Searching-Highlighting
>     > * Term Frequencies:
>     >
>     http://grails.org/Searchable+Plugin+-+Searching#SearchablePlugin-Searching-termFreqs
>     > * The start of a mapping DSL:
>     >
>     http://grails.org/Searchable+Plugin+-+Mapping#SearchablePlugin-Mapping-MappingDSL
>     > * Better default mapping of embedded domain classes:
>     >
>     http://grails.org/Searchable+Plugin+-+Mapping#SearchablePlugin-Mapping-Defaultmappingrules
>     >
>     > Cheers,
>     > Maurice
>     >
>


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email