【问题标题】:Lucene/Hibernate Search - Query associated collections?Lucene/Hibernate Search - 查询关联的集合?
【发布时间】:2011-12-22 08:09:22
【问题描述】:

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

@Indexed
public class Item {

   ...

  @IndexedEmbedded
  private List<Keyword> keywords;

   ...
}

@Indexed
public class Keyword {

   ...

  @Field
  private String value;

   ...
}

我希望能够对包含特定关键字值的所有 Item 对象运行查询。我已经在我的数据库中设置了许多测试对象,并且似乎正在正确创建索引。但是,当我为 "keywords.value" = &lt;MY KEYWORD VALUE&gt; 创建并运行查询时,我总是返回 0 个结果。

Hibernate Search/Lucene 有能力运行这种类型的查询吗?还有什么我应该做的吗?是否有我可能遗漏的其他注释?

【问题讨论】:

    标签: java search lucene indexing hibernate-search


    【解决方案1】:

    Hibernate Search 非常适合这种查询;但它可以用更简单的方式完成。

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

    1. 输入的小写
    2. 在空格上以单独的术语分割

    因此,如果您将查询定义为 TermQuery(我假设这是您所做的,因为它是最简单的形式),那么您必须匹配令牌的小写形式(没有空格)。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多