当前位置: 首页 > 知识库问答 >
问题:

如何在Lucene搜索服务中获得页码

李烨烁
2023-03-14

我的要求是,如果用户使用Lucene搜索搜索“页码”,搜索结果应注意将结果中的页码与列表顶部的精确页码匹配。

现在在我的例子中,我尝试使用SortField进行排序-

new Sort(new SortField("bookPageNumber", SortField.STRING));

假设我搜索了术语'5',然后在搜索结果中,而不是在列表的顶部显示精确页码匹配,它显示搜索的术语'5',它存在于每个页面上。

有人能建议如何在列表顶部的Lucene搜索结果中包含页码吗。

我的代码-

QueryParser qParser;
qParser = new QueryParser("contents", new StandardAnalyzer(Version.LUCENE_CURRENT));
qParser.setDefaultOperator(QueryParser.Operator.AND);
String searchResultMaxCount = "10";
int maxCount = Integer.parseInt(searchResultMaxCount);
Query query = qParser.parse("5");
Sort sort = new Sort(new SortField("bookPageNumber", SortField.STRING));
TopDocs topDocs = indexSearcher.search(query, null, maxCount, sort);

共有1个答案

束俊材
2023-03-14

我认为这将是一个很好的例子来改变一个领域的得分与提升。有了提升,你就可以操纵搜索结果的得分。在您的情况下:添加一个提升到您的书页PageNumberField。

您可以通过两种方式来实现这一点:在索引时添加一个boost,或者在使用查询进行搜索时添加一个boost。

更多信息请点击此处:http://lucene.apache.org/core/6_6_0/core/org/apache/lucene/search/package-summary.html#scoringBasics

 类似资料:
  • 在测试此文本时,我在要在文本中搜索的列上创建了lucene(3.0.1)索引: 如果我按关键字搜索,它会给出结果,但按 我正在使用standardAnalyzer: 因为已设置,它应创建令牌,并且应存在$GLD。Analyzer将从文本中删除停止字,因为word也将在该过程中删除。

  • 12:40:34:正在执行任务“jar”... 任务:包装器 在0s中生成成功1个可操作任务:1个已执行

  • 问题内容: 我是Lucene的新手,在创建 用于查询文本文件集合的 简单代码时遇到一些问题。 我尝试了此示例,但与新版本的Lucene不兼容。 UDPATE: 这是我的新代码,但是仍然无法使用。 问题答案: Lucene是一个相当大的主题,涉及很多类和方法,通常您必须至少了解一些基本概念才能使用它。如果您需要快速可用的服务,请改用Solr。如果您需要对Lucene的完全控制,请继续阅读。我将介绍一

  • bugu-mongo 2.x版本集成了Lucene的功能。当往MongoDB中新增一个Document时,能自动为该Document建立Lucene索引。相应的,当MongoDB中的Document被修改、删除时,对应的Lucene索引也会修改、删除。 另外,bugu-mongo还提供了对Lucene搜索的支持。根据Lucene索引进行搜索的时候,搜索结果能自动转换成对应的Entity对象。 在L

  • 我想我错过了一些关于如何在JavaMail中搜索的内容。 从文件夹下载空邮件 创建与结果匹配的新搜索词 使用搜索词筛选(yourFolder.search)结果 这是可行的。但是,为什么要这样做?如果我使用javamail连接到gmail之类的东西,搜索不会在服务器端执行,而且使用整个javax似乎没有任何优势。邮政搜索SearchTerm构建在提高效率或减少需要通过网络发送的数据量方面。。。 我

  • 我的任务是使用lucene在我们的产品表中搜索。我已经创建了一个索引,正在使用带有多个字段的QueryParser进行搜索,但结果不是我所需要的。我有一个存储为LM10的产品,但如果搜索词是LM 10,我希望能够找到它,但如果搜索词是Fred LM10或Fred LM 10,它也必须能够匹配。你知道我如何在Lucene做到这一点吗。 提前谢谢