Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Lucene高亮显示:高亮显示标记部分_Java_Lucene - Fatal编程技术网

Java Lucene高亮显示:高亮显示标记部分

Java Lucene高亮显示:高亮显示标记部分,java,lucene,Java,Lucene,你好 主要问题如下:我是否正确理解Lucene只能突出显示令牌流中的完整令牌 事实上,我陷入了以下情况: 有一个文档保留了一些标识符字段,让它成为“IMEI”(15位数字)。 “IMEI”不需要分散到单独的令牌,所以我在索引时使用KeywordAnalyzer 用户可以通过提供“IMEI”的一部分来搜索文档。好的,它也是可以解决的,只需将用户字符串包装为前缀或通配符查询,然后进行搜索 现在我只需要突出显示“IMEI”的那些部分,它对应于用户输入的请求。在这里我结巴了。 如果document.IM

你好

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

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

  • 有一个文档保留了一些标识符字段,让它成为“IMEI”(15位数字)。 “IMEI”不需要分散到单独的令牌,所以我在索引时使用KeywordAnalyzer

  • 用户可以通过提供“IMEI”的一部分来搜索文档。好的,它也是可以解决的,只需将用户字符串包装为前缀或通配符查询,然后进行搜索

  • 现在我只需要突出显示“IMEI”的那些部分,它对应于用户输入的请求。在这里我结巴了。 如果document.IMEI=123456789054321,用户输入2345,Lucene总是突出显示整个令牌: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));
    
    String imei=“1234567890”;
    KeywordAnalyzer analyzer=新的KeywordAnalyzer();
    查询查询=新的通配符查询(新术语(“IMEI”,“2345*”);
    QueryScorer scorer=新的QueryScorer(查询);
    Fragmenter Fragmenter=新的SimplePanFragmenter(记分器);
    格式化程序格式化程序=新的SimpleHTMLFormatter(“,”);
    Highlighter Highlighter=新的Highlighter(格式化程序、记分器);
    System.out.println(highlighter.getBestFragment(分析器,“IMEI”,IMEI));
    
    通过编写我自己的格式化程序实现解决了这个问题。

    你能分享一下吗?