我正在使用Hibernate Search和Lucene一起在我的数据库上实现全文搜索。我想知道hibernate搜索查询或lucene查询返回顶级排名和最相关的结果?文档说:
Apache Lucene提供了一种非常灵活且功能强大的排序方式 结果。虽然默认排序(按相关性)最合适 时间
链接:http://docs.jboss.org/hibernate/search/4.2/reference/en-US/html_single/#search-query
部分:5.1.3.3。排序
但我对结果非常困惑,因为它们总是与对象的ID一起排列。我只需要前100个最相关的记录。
答案 0 :(得分:1)
答案 1 :(得分:1)
按相关性排序会受到Analyzer选项的影响。如果你按照主键的顺序得到结果,那么它们可能都具有相同的分数,这通常是不太可能的,所以我的猜测是你没有在任何搜索过的字段上启用标记化。
确保您对查询中使用的字段进行了标记,并且他们正在使用适当的Analyzer。要选择合适的一个,您必须进行一些实验,因为它取决于语言(如果它是自然语言)或您要编制索引的数据类型。
要实际调试Relevance sort应用的排序顺序,请参阅Hibernate Search文档中Projections的用法: FullTextQuery.SCORE 和 FullTextQuery.EXPLANATION 对于理解正在发生的事情非常有用。
快速试验不同分析仪效果的便捷实用程序是使用 org.hibernate.search.util.AnalyzerUtils 。您可以自己编写创建Analyzer实例的单元测试,也可以使用 org.hibernate.search.engine.SearchFactory.getAnalyzer(String)或用于特定索引的基础测试按名称检索分析器。实体类型的实体: org.hibernate.search.engine.SearchFactory.getAnalyzer(Class)。