0
美好的一天。Lucene突出顯示:突出顯示一個令牌部分
主要問題如下:我是否正確理解Lucene只能從令牌流中突出顯示一個完整的令牌?
其實,我陷在以下情況:
存在與保持一些標識符字段的文檔,讓它成爲「IMEI」(15位數)。 'IMEI'不需要劃分成單獨的標記,所以我在編制索引時使用KeywordAnalyser。
用戶可以通過提供的'IMEI'的部分來搜索文檔。好的,它也可以解決,只需將用戶字符串包裝爲前綴或通配符查詢並執行搜索即可。
現在我只需要突出顯示用戶輸入的對應於請求的'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));
你能分享一下嗎? – serg 2015-05-12 05:33:05