我的要求是,如果用户使用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);
答案 0 :(得分:0)
我认为这将是一个很好的例子,可以通过提升来改变一个场的得分。通过提升,您可以操纵搜索结果的分数。 在您的情况下:为bookPageNumberField添加一个提升。
您可以通过两种方式实现这一目标: 在索引时添加提升或在使用查询进行搜索时添加提升。
更多信息: http://lucene.apache.org/core/6_6_0/core/org/apache/lucene/search/package-summary.html#scoringBasics