2014-08-27 105 views
0

美好的一天。Lucene突出顯示:突出顯示一個令牌部分

主要問題如下:我是否正確理解Lucene只能從令牌流中突出顯示一個完整的令牌?

其實,我陷在以下情況:

  1. 存在與保持一些標識符字段的文檔,讓它成爲「IMEI」(15位數)。 'IMEI'不需要劃分成單獨的標記,所以我在編制索引時使用KeywordAnalyser。

  2. 用戶可以通過提供的'IMEI'的部分來搜索文檔。好的,它也可以解決,只需將用戶字符串包裝爲前綴或通配符查詢並執行搜索即可。

  3. 現在我只需要突出顯示用戶輸入的對應於請求的'IMEI'部分。在這裏,我陷入困境。 如果document.IMEI = 123456789054321,以及用戶輸入2345,Lucene的處處彰顯出整個令牌:,但我需要的是1 6789054321.

是否有可能實現這一目標,如果是 - 如何?

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)); 

回答

1

寫我自己的實現格式化的問題解決了。

+0

你能分享一下嗎? – serg 2015-05-12 05:33:05