gpt4 book ai didi

java - Lucene高亮: highlight a token part

转载 作者:行者123 更新时间:2023-12-01 12:36:35 32 4
gpt4 key购买 nike

美好的一天。

主要问题如下:我是否正确理解 Lucene 只能突出显示 token 流中的完整 token ?

事实上,我陷入了以下情况:

  1. 有一个文档保留了一些标识符字段,使其为“IMEI”(15 位数字)。“IMEI”不需要分解为单独的标记,因此我在索引时使用 KeywordAnalyser。

  2. 用户可以通过提供“IMEI”的部分来搜索文档。好的,这也是可以解决的,只需将用户字符串包装到前缀或通配符查询中并进行搜索即可。

  3. 现在我只需突出显示“IMEI”中与用户输入的请求相对应的部分。我在这里卡住了。如果 document.IMEI = 123456789054321,并且用户输入 2345,Lucene 总是突出显示整个 token :123456789054321,但我需要的是 123456789054321。

是否有可能实现这一目标?如果可以,如何实现?

PS:这是代码片段:

    String imei = "1234567890";
KeywordAnalyzer analyzer = new KeywordAnalyzer();
Query query = new WildcardQuery(new Term("IMEI", "*2345*"));
QueryScorer scorer = new QueryScorer(query);
Fragmenter fragmenter = new SimpleSpanFragmenter(scorer);
Formatter formatter = new SimpleHTMLFormatter("<b>", "</b>");
Highlighter highlighter = new Highlighter(formatter, scorer);
System.out.println(highlighter.getBestFragment(analyzer, "IMEI", imei));

最佳答案

通过编写我自己的 Formatter 实现解决了该问题。

关于java - Lucene高亮: highlight a token part,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25526560/

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