Hibernate搜索范围在List <integer> </integer>中

时间:2013-08-19 23:54:54

标签: java hibernate-search

我开始使用hibernate搜索,并且正在努力查询List<Integer>

我创建了一个桥梁来翻译列表&lt; Integer&gt;到一个字符串。从这里,我可以通过关键字完全匹配列表中的任何项目,但我似乎无法使用范围查询它。

我的实体A的属性“b”定义为List。

我想知道是否有人可以帮我查询所有在定义范围内有任何b元素的A实体?

例如: 具有以下集合{1,10,15}的实例应出现在以下关于“b”属性的查询中:

下面(20), 上述(14), 下面(2)

但不是在搜索中:

以上(16),低于(0)。

我希望自己清楚明白。 提前谢谢!

1 个答案:

答案 0 :(得分:0)

将您的网桥更改为多次存储相同的字段,每个字段都包含整数列表的值a。因此,假设您的字段名为myInt,则存储myInt = 1,myInt = 10和myInt = 15,示例代码:

public class MyBridge implements FieldBridge {
    public void set(String name, Object value, Document document, LuceneOptions luceneOptions) {
        if (value instanceof List){
            for(Object myInt:(List)value){
                Field myIntField = new Field(name, myInt.toString(), luceneOptions.getStore(), luceneOptions.getIndex(), luceneOptions.getTermVector());
                myIntField.setBoost(luceneOptions.getBoost());
                document.add(myIntField);
            }
        }
    }
}

或者,您可以插入一些自定义lucene Filter来执行此操作,但过滤器有点令人费解。