[
http://opensource.atlassian.com/projects/hibernate/browse/HSEARCH-572?pag...
]
Sanne Grinovero commented on HSEARCH-572:
-----------------------------------------
thanks for the example.
Consider that some Solr modules are an (optional) dependency of Hibernate Search already;
it's used for example to ease the definition of Analyzers, so you might be able to use
the Solr code directly.
It's not clear to me why you can't replace the lines
{noformat}final Map<String, Object> map = (Map<String, Object>) value;
for (final Map.Entry<String, Object> entry : map.entrySet()) {
if (entry.getValue() == null){ continue; }
final String propertyName =name+"."+ entry.getKey();
final String propertyValue = entry.getValue().toString();
final Field field = new Field(propertyName, propertyValue, luceneOptions.getStore(),
luceneOptions.getIndex());
if (luceneOptions.getBoost() != null){
field.setBoost(luceneOptions.getBoost());
}
document.add(field);
}
}
{noformat}
with the code:
{noformat}final Map<String, Object> map = (Map<String, Object>) value;
for ( final Map.Entry<String, Object> entry : map.entrySet() ) {
if ( entry.getValue() == null ) {
continue;
}
final String propertyName = name + "." + entry.getKey();
final String propertyValue = entry.getValue().toString();
luceneOptions.addFieldToDocument( propertyName, propertyValue, document );
}{noformat}
BTW the latter is shorter and it benefits from isEmpty() check to skip it, supports
compression on both Lucene <3 and >3 and might benefit from more features or
optimizations in the future.
a plea to reconsider deprecating luceneOptions.getStore(),
luceneOptions.getIndex() etc
---------------------------------------------------------------------------------------
Key: HSEARCH-572
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HSEARCH-572
Project: Hibernate Search
Issue Type: Deprecation
Components: mapping
Reporter: Jason Eacott
Assignee: Emmanuel Bernard
Fix For: 3.3.0
Maybe I'm missing something, but for a fieldBridge I've noticed that it is now
recommended to use luceneOptions.addFieldToDocument in place of document.add(new Field...
This decision seems a bit overzealous and optimistic to me, especially given the current
and significant lag in lucene version vs supported HibernateSearch version.
for example - if luceneOptions.getStore(), luceneOptions.getIndex() etc are not
deprecated then I can easily use them to create a custom field bridge for field types
unknown to hibernateSearch. While these methods remain it is very easy to create a dynamic
MapBridge for example that can choose to index a Map's key value pairs as Text or
NumericFields as appropriate (Since HSearch currently has no support for NumericFields
this is very useful). Without these methods, the options are much more limited.
So I'd just like to ask that either these methods remain, or an alternate arrangement
be made available whereby any lucene field type can be added to a document with suitable
index, store, boost, termvector etc.
Cheers.
--
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