Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Lucene/Hibernate搜索-查询关联的集合?_Java_Search_Lucene_Indexing_Hibernate Search - Fatal编程技术网

Java Lucene/Hibernate搜索-查询关联的集合?

Java Lucene/Hibernate搜索-查询关联的集合?,java,search,lucene,indexing,hibernate-search,Java,Search,Lucene,Indexing,Hibernate Search,我正在使用JPA/Hibernate和HibernateSearch(Lucene)编写一个基于Seam的应用程序。我有一个名为Item的对象,它与一个对象有多对多关系 关键词。看起来是这样的(省略了一些注释): @索引 公共类项目{ ... @指数化 私有列表关键词; ... } @索引 公共类关键字{ ... @场 私有字符串值; ... } 我希望能够对包含特定关键字值的所有Item对象运行查询。我已经在我的数据库中设置了许多测试对象,看起来索引的创建是正确的。但是,当我为“keywor

我正在使用JPA/Hibernate和HibernateSearch(Lucene)编写一个基于Seam的应用程序。我有一个名为Item的对象,它与一个对象有多对多关系 关键词。看起来是这样的(省略了一些注释):

@索引
公共类项目{
...
@指数化
私有列表关键词;
...
}
@索引
公共类关键字{
...
@场
私有字符串值;
...
}
我希望能够对包含特定关键字值的所有Item对象运行查询。我已经在我的数据库中设置了许多测试对象,看起来索引的创建是正确的。但是,当我为
“keywords.value”=
创建并运行查询时,总是返回0个结果


Hibernate Search/Lucene是否能够运行这种类型的查询?我还有别的事要做吗?是否有我可能遗漏的其他注释?

Hibernate搜索非常适合此类查询;但这可以用一种更简单的方法来实现

关于您的问题:将分析Hibernate Search(Lucene)索引的文本,并应用默认分析器:

  • 输入端下壳体
  • 在空格上以单独的术语拆分
  • 因此,如果您将查询定义为TermQuery(我假设这就是您所做的,因为它是最简单的形式),那么您必须匹配标记的小写形式(没有空格)

    记住这一点,您可以将所有关键字转储到项实体上的单个Blob字符串中,而无需将其映射为单独的关键字,将它们链接到由空格分隔的单个字符串中

    @Indexed
    public class Item {
    
       ...
    
      @IndexedEmbedded
      private List<Keyword> keywords;
    
       ...
    }
    
    @Indexed
    public class Keyword {
    
       ...
    
      @Field
      private String value;
    
       ...
    }