查找高光的位置偏移量,而不仅仅是包含片段的字符串

问题描述 投票:0回答:1

问题是我实际上只需要突出显示的单词的位置(因此它们的开始和结束偏移量),而不是突出显示的片段。我原来的解决方案(但在Java中)与这里的解决方案非常相似,他们使用令牌流对每个令牌进行评分:https://stackoverflow.com/a/39185606/3543214

然而,正如对该解决方案的评论所暗示的那样,我真正需要的是找到一种方法,使其不仅适用于单个代币。我现在遇到的问题是,如果我的查询是搜索“牛跳”,即使它们没有在一起,我也会得到“牛”和“跳”的点击。有什么想法吗?

java elasticsearch search lucene
1个回答
0
投票
  1. 如果您的问题是您实际上不希望有点击,请修复您的查询。看起来您需要在这里使用 PhraseQuery 这样您将只获得完全匹配。

  2. 为什么你们(我还检查了您引用的帖子)试图用 lucene 解决您的问题,而您只需要编写一些简单的纯 java 函数来将原始搜索字符串作为输入并找到其上的命中???像这样简单的事情就可以工作,不需要深入研究 lucene 世界:

public HighlightDetails getHighlightDetails(String rawQuery, String hitTerm){
 HighlightDetails result = new HighlightDetails();
 int startIndex = rawQuery.indexOf(hitTerm);
 result.Match = hitTerm;
 result.StartIndex = startIndex;
 result.EndIndex = startIndex + hitTerm.length;

 return result;
}
© www.soinside.com 2019 - 2024. All rights reserved.