我使用Hibernate搜索和Lucene一起在我的数据库上实现全文搜索。我想知道hibernate搜索查询还是lucene查询返回排名最高和最相关的结果?文件上说:
Apache提供了一种非常灵活和强大的方法来对结果进行排序。而默认的排序(按相关性)在大多数情况下都是合适的。
链接:单/#搜索-查询
第5.1.3.3节。排序
但是,我对结果非常困惑,因为它们总是按照对象的I排列。我只需要前100名最相关的记录。
发布于 2014-08-27 10:09:47
请参阅定制Lucene的评分公式
发布于 2014-08-29 10:40:38
按相关性排序受分析器选择的影响。如果您按主键的顺序得到结果,很可能它们都有相同的分数,这通常是非常不可能的,所以我猜您没有在任何搜索字段上启用标记化。
确保您正在标记查询中使用的字段,并且它们使用的是适当的Analyzer。要选择合适的语言,您必须进行一些实验,因为它取决于语言(如果是自然语言)或索引的数据类型。
要实际调试关联排序应用的排序顺序,请参阅Hibernate搜索文档中预测的用法: FullTextQuery.SCORE和FullTextQuery.EXPLANATION对于理解正在发生的事情都非常有用。
一个方便实用的快速实验不同的分析器的效果是使用org.hibernate.search.util.AnalyzerUtils。您可以自己编写单元测试,创建Analyzer实例,也可以使用org.hibernate.search.engine.SearchFactory.getAnalyzer(String)按名称检索分析器,也可以按实体类型检索用于特定索引实体的基本测试: org.hibernate.search.engine.SearchFactory.getAnalyzer(Class).
https://stackoverflow.com/questions/25522063
复制相似问题