download0322 2013-11-14 12:54 采纳率: 0%
浏览 1060

lucene使用中设置结果高亮显示的问题

用下面的代码设置查询结果高亮显示,可结果<font color='red'>, </font>都给加到text的最前面了,就比如说我对“我爱中国”里的“中国”进行查询,返回的text是“<font color='red'></font>我爱中国”,为什么呢
代码如下

String text = doc.get(fields[2]);
SimpleHTMLFormatter simpleHTMLFormatter = new SimpleHTMLFormatter("<font color='red'>", "</font>");  
Highlighter highlighter = new Highlighter(simpleHTMLFormatter,new QueryScorer(query1));   
highlighter.setTextFragmenter(new SimpleFragmenter(text.length())); 
TokenStream tokenStream = luceneAnalyzer.tokenStream("", new StringReader(text));
String highLightText = highlighter.getBestFragment(tokenStream, text); 
  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-02-26 11:26
    关注

    该回答引用ChatGPT

    根据您提供的代码,问题可能出现在 SimpleFragmenter 中使用的 text.length()。这个方法返回整个文本的长度,这可能会导致高亮显示过长,从而出现不必要的标记。


    尝试将 SimpleFragmenter 中使用的 text.length() 替换为一个更合适的值,例如要高亮显示的文本的最大长度或一些其他适当的值。例如,您可以使用 SimpleFragmenter(100) 来将高亮显示的片段长度限制为 100 个字符。


    另外,如果您发现高亮显示的结果在错误的位置出现,您可以尝试使用 highlighter.getBestFragments(tokenStream, text, n) 方法,其中 n 是要返回的高亮显示片段的数量。这将返回一个包含多个高亮显示片段的字符串数组,您可以从中选择正确的结果。

    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘