[
http://opensource.atlassian.com/projects/hibernate/browse/HSEARCH-115?pag...
]
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-115
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HSEARCH-115
Project: Hibernate Search
Issue Type: Improvement
Components: mapping
Reporter: Julien Brulin
Assignee: Hardy Ferentschik
Fix For: 3.1.0
Hi,
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)
@Indexed
public class TagTranslation implements java.io.Serializable {
private static final long serialVersionUID = -1065316566731456110L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@DocumentId
private 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")
@IndexedEmbedded
private 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.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira