Hi Emmanuel,
what's you take on this? Just adding another String parameter will work, but are we not getting too many parameters into the method? Wouldn't it be nicer to pass the actual @Field annotation. I think this might make things also clearer for the implementor of the interface.
I am also trying here to get a little into your head to understand your ideas behind the code design - hope
you don't mind ;-)
--Hardy
------- Forwarded message -------
From: "Hardy Ferentschik (JIRA)" <noreply@atlassian.com>
To: hardy@ferentschik.de
Subject: [Hibernate-JIRA] Commented: (HSEARCH-115) Add a default value for indexing null value
Date: Mon, 21 Apr 2008 14:04:33 +0200
[ http://opensource.atlassian.com/projects/hibernate/browse/HSEARCH-115?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_30032 ]
Hardy Ferentschik commented on HSEARCH-115:
-------------------------------------------
Ok, here are a few suggestions:
1. This is the simplest way. Basically just add a new property named 'indexNullAs' to @Field and @ClassBridge. Accordingly extend the FieldBridge interface to set(String name, Object value, Document document, Field.Store store, Field.Index index, Field.TermVector termVector, Float boost, String indexNullAs).
2. Alternatively one could change the FieldBridge API to actually pass in the Field annotation itself: set(String name, Object value, Document document, Field fieldAnnotation, Float boost). This would reduce the amount of parameters and might actually be more transparent for users implementing custom bridges. Unfortunately, one would have to introduce a ClassBridge interface as well in this case. I am not sure whether it is a good design choice to pass annotation instances around.
3. We ccould also change the API into something like this: set(String name, Object value, Document document, IndexProperties props), where IndexProperties is just a wrapper class for Field.Store, Field.Index, ... The drawback is that this just increases the number of classes.
Any comments?Add a default value for indexing null value-------------------------------------------Key: HSEARCH-115URL: http://opensource.atlassian.com/projects/hibernate/browse/HSEARCH-115Project: Hibernate SearchIssue Type: ImprovementComponents: mappingReporter: Julien BrulinAssignee: Hardy FerentschikFix For: 3.1.0Hi,Null elements are not indexed by lucene then it's not easy to use a nullable property in lucene query.I have a TagTranslation entity in my model with a nullable property language. In this case null is used as default language for tag translation.Each translation may have many variations like synonyms.Because I can specified a default value for null value in the @Field annotation like this @Field(index=Index.UN_TOKENIZED, store=Store.NO, default='null'), i can't search a cat tag with a default translation like this : +value:cat* +lang:null<pre></code>@Entity()@Table(name="indexing_tag_trans")@org.hibernate.annotations.Cache(usage=org.hibernate.annotations.CacheConcurrencyStrategy.READ_WRITE)@Indexedpublic class TagTranslation implements java.io.Serializable {private static final long serialVersionUID = -1065316566731456110L;@Id@GeneratedValue(strategy=GenerationType.IDENTITY)@DocumentIdprivate Integer id;@Field(index=Index.UN_TOKENIZED, store=Store.NO)private String language;@Field(index=Index.TOKENIZED, store=Store.YES)private String value;@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY)@org.hibernate.annotations.Fetch(org.hibernate.annotations.FetchMode.SUBSELECT)@JoinColumn(name="translation_id")@IndexedEmbeddedprivate List<TagVariation> variations = new LinkedList<TagVariation>();public TagTranslation() { }...</code></pre>What do you think about that ?Ps: sorry for english write, i am a french guy.
--
Hartmut Ferentschik
Ekholmsv.339 ,1, 127 45 Skärholmen, Sweden
Phone: +46 704 225 097 (m)