问题标签 [hibernate-search]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Lucene 和访问控制(评论的可见性)
想象一下全文搜索的这个简单场景:带有评论的文章。我也想通过评论中的文字搜索文章。仅此一项就相当容易实现。
但是,并非所有用户都可以看到所有评论。写评论的用户也可以限制它对具体角色的可见性(所以评论有两个字段:文本和角色)。
是否可以限制对文章的 lucene 搜索,使其仅查看当前用户可见的评论(comment.role 在当前用户的角色集中)?
如果是这样,请指出我应该如何去做并编写这样的查询(最好)或 lucene 过滤器的正确方向。
(我通过hibernate-search使用lucene,但应该没有区别)
full-text-search - Lucene 中的多索引搜索(休眠搜索)
Lucene Feautures 官方网站声明 lucene 支持“合并结果的多索引搜索”。
是否有可能以某种方式通过休眠搜索来做到这一点?
我的用例:带评论的文章。我想要两个独立的索引:一个用于文章,一个用于评论。我希望能够在其中一条评论中通过匹配找到文章。从用户的角度来看,我希望搜索“查看”文章文本及其评论并返回文章列表。(我知道我可以通过将所有评论存储为文章文档中的字段来实现这一点,但我想对评论中的搜索应用过滤器。)
甚至有可能使用原生 Lucene 还是我/我完全错过了这一点?
lucene - Hibernate Search 和 Lucene:无法确定排序类型
我正在使用休眠 - Lucene 搜索。
当索引文件/表中没有可用数据时,排序时出现以下运行时异常。
这是我的代码:
.......... .......... query.setFirstResult(startIndex); query.setMaxResults(displayCount);
………………………………………………………………………………………………………………
java.lang.RuntimeException:vendorName 字段中没有术语 - 无法在 org.apache.lucene.search.FieldCacheImpl$Cache.get 的 org.apache.lucene.search.ExtendedFieldCacheImpl$5.createValue(ExtendedFieldCacheImpl.java:139) 确定排序类型(FieldCacheImpl.java:71) 在 org.apache.lucene.search.ExtendedFieldCacheImpl.getAuto(ExtendedFieldCacheImpl.java:127) 在 org.apache.lucene.search.FieldSortedHitQueue.comparatorAuto(FieldSortedHitQueue.java:487) 在 org.apache。 lucene.search.FieldSortedHitQueue$1.createValue(FieldSortedHitQueue.java:184) at org.apache.lucene.search.FieldCacheImpl$Cache.get(FieldCacheImpl.java:71) at org.apache.lucene.search.FieldSortedHitQueue.getCachedComparator(FieldSortedHitQueue .java:167) 在 org.apache.lucene.search.FieldSortedHitQueue.(FieldSortedHitQueue.java:55) 在 org.apache.lucene.search。TopFieldDocCollector.(TopFieldDocCollector.java:43) at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:121) at org.apache.lucene.search.Searcher.search(Searcher.java:86) at org. hibernate.search.query.QueryHits.updateTopDocs(QueryHits.java:103) at org.hibernate.search.query.QueryHits.(QueryHits.java:61) at org.hibernate.search.query.FullTextQueryImpl.getQueryHits(FullTextQueryImpl.java :354) 在 org.hibernate.search.query.FullTextQueryImpl.list(FullTextQueryImpl.java:270) 在 com.tis.purchasedetails.dao.PurchaseDetailsDAO.getAllPurchaseDetails(PurchaseDetailsDAO.java:1025) 在 org.apache.jsp.jsp。 PurchaseDetails.purchaseDetailsList_jsp._jspService(purchaseDetailsList_jsp.java:275) 在 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) 在 javax.servlet.http.HttpServlet。org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) .jasper.servlet.JspServlet.service(JspServlet.java:264) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252 ) 在 org.apache.catalina.core.ApplicationDispatcher 的 org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) 的 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)。 org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398) 上的 processRequest(ApplicationDispatcher.java:463)apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) 在 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) 在 org.apache.jasper.servlet.JspServlet.service(JspServlet. java:264) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) 在 org.apache.catalina.core.ApplicationFilterChain .doFilter(ApplicationFilterChain.java:173) 在 org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) 在 org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) 在 org. apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) 在 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) 在 org.apache.jasper.servlet.JspServlet.service(JspServlet. java:264) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) 在 org.apache.catalina.core.ApplicationFilterChain .doFilter(ApplicationFilterChain.java:173) 在 org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) 在 org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) 在 org. apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)332) 在 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) 在 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) 在 javax.servlet.http.HttpServlet.service (HttpServlet.java:802) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 在 org.apache。 catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java: 398)332) 在 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) 在 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) 在 javax.servlet.http.HttpServlet.service (HttpServlet.java:802) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 在 org.apache。 catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java: 398)java:264) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) 在 org.apache.catalina.core.ApplicationFilterChain .doFilter(ApplicationFilterChain.java:173) 在 org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) 在 org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) 在 org. apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)java:264) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) 在 org.apache.catalina.core.ApplicationFilterChain .doFilter(ApplicationFilterChain.java:173) 在 org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) 在 org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) 在 org. apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) 在 org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) 在 org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.爪哇:398)apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) 在 org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) 在 org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.爪哇:398)
java - JPA HibernateSearch 投影
我正在尝试将 JPA 与 HibernateSearch 一起使用。我在http://docs.jboss.org/hibernate/stable/search/reference/en/html/search-query.html中使用了示例 5.3 。结果如预期的那样出来。
然而,返回的数据是一个巨大的图表。我只需要数据的主键。所以,我尝试了示例 5.9,但它只显示了 Hibernate API。没有javax.persistence.Query.setProjection()
方法。
我可以使用什么来获取搜索结果的主键?我应该尝试session
从EntityManager
JPA 中获取休眠状态吗?
谢谢你的帮助。
java - 未继承 Hibernate 搜索注释
我正在索引一个类,其超类具有以下注释:
相同的 @Inheritance 注释在子类上。超类的注解都在方法上。我想在超类上索引的字段被忽略:
超类只有标记的属性和 ID。ID 显示得很好,因为它有 @Id 注释,但我不确定为什么 flagged 没有被索引。我找到了这篇文章,但没有给出明确的答案。我可能做错了什么?
hibernate-search - (N)Hibernate.Search : 在一个字段中索引不同的属性
当我使用 Lucene 索引我的实体时,我习惯将所有索引属性放在一个名为“all”的字段中,以对我的“所有”实体类型执行搜索。
现在,使用 NHibernate.Search,我找不到如何做到这一点。我试过这个:
但是我在 ScopedAnalyzer.cs 第 26 行中抛出了一个异常:“字典中已存在密钥”:
其中“范围”是索引字段的名称(此处为“全部”)。如果我像
它会很好地工作:我将为每个“发布”文档设置 2 个字段,一个带有正文,一个带有名称。但是,我并不容易修改 NHibernate.Search 源代码。
有人对如何在一个字段中索引不同的属性有建议吗?
java - 使用通配符查询时出现 BooleanQuery$TooManyClauses 异常
我正在使用 Hibernate Search / Lucene 来维护一个非常简单的索引来按名称查找对象 - 没有花哨的东西。
我的模型类都扩展了一个NamedModel
基本上如下所示的类:
我的问题是,BooleanQuery$TooManyClauses
在查询名称以特定字母开头的对象的索引时出现异常,例如"name:l*"
. 类似的查询"name:lin*"
将毫无问题地工作,实际上任何在通配符之前使用多个字母的查询都可以工作。
在网上搜索类似问题时,我只发现人们使用非常复杂的查询,而且这似乎总是导致异常。我不想增加maxClauseCount
,因为我认为仅仅因为达到限制就改变限制不是一个好习惯。
这里有什么问题?
hibernate-search - 休眠搜索问题
我正在使用 Hibernate Search 并在一个表上为域对象应用 Lucene 索引。我现在想从该表中选择域对象,并根据与未索引的其他表的连接应用过滤。
例如,我有 Auctionlots 表,我已经建立了索引。我有报价表。报价参考了拍卖品。
我想在 AuctionLots 表中进行完整的测试搜索并返回没有引号的匹配实体。在普通 SQL 中,这将通过 JOIN 来实现。
但是在使用 HibernateSearch 的情况下,我必须进行完整的测试搜索才能获得域对象,但我不知道如何使用 JOIN 执行过滤。
有没有人知道如何做到这一点?
java - 搜索结果应归于 Hibernate Search 中的字段
我有一个从对象的许多字段中搜索的 Hibernate 搜索。是否有可能知道哪些字段与每个结果对象的结果匹配?
java - 休眠搜索+ spring3 + jpa
我正在尝试将休眠搜索集成到我的项目中。我的模型已编入索引,但由于某种原因,我的搜索查询没有返回任何结果。我已经尝试解决这个问题几个小时了,但我所做的似乎没有任何效果。
域对象:
道:
服务:
测试:
配置
数据库实际上填充了与该权限字段值匹配的角色。实体管理器是有效的,因为我所有的常规 CRUD 测试都成功了。这意味着该错误完全与休眠搜索(3.1.1.GA)相关,但它哪里出错了?