gpt4 book ai didi

lucene - 最相关的搜索和排序结果

转载 作者:行者123 更新时间:2023-12-03 10:02:58 25 4
gpt4 key购买 nike

我正在尝试根据我们拥有的数据制作一个搜索页面。这是我的代码。

            SortField sortField = new SortField(TEXT_FIELD_RANK, SortField.Type.INT, true);
Sort sort = new Sort(sortField);
Query q = queryParser.parse(useQuery);
TopDocs topDocs = searcher.search(q, totalLimit, sort);
ScoreDoc[] hits = topDocs.scoreDocs;
log.info("totalResults="+ topDocs.totalHits);
int index = getStartIndex(start, maxReturn);
int resultsLength = start * maxReturn;
if (resultsLength > totalLimit) {
resultsLength = totalLimit;
}
log.info("index:"+ index + "==resultsLength:"+ resultsLength);
for (int i = index; i < resultsLength; ++i) {

}

基本上,这是我的要求。如果有完全匹配,我需要显示完全匹配。如果没有完全匹配,我需要按字段对结果进行排序。所以我检查 for 循环内的完全匹配。

但在我看来,它无论如何都会对结果进行排序,因此即使存在完全匹配,它也不会显示在第一页上。

谢谢。

最佳答案

您将其设置为按字段值排序,而不是按相关性排序,因此无法保证最佳匹配将出现在第一页上。您可以先按相关性排序,然后按字段值排序,例如:

Sort sort = new Sort(SortField.FIELD_SCORE, sortField);

如果这就是你要找的。

否则,如果您希望忽略除直接匹配之外的任何内容的相关性,您可以首先使用更严格的(精确匹配)查询进行查询,将您的精确匹配作为一个完全独立的结果集。

关于lucene - 最相关的搜索和排序结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17580216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com