안녕하세요.Lucene 강조 표시 : 토큰 부분 강조 표시
주요 질문은 다음과 같습니다. Lucene이 토큰 스트림에서만 완전한 토큰 만 강조 표시 할 수 있다고 올바르게 이해 했습니까?
는 사실, 나는 다음과 같은 상황에 갇혀 :
, 그것은 'IMEI'(15 자리 숫자)하자 일부 식별자 필드를 유지 가진 문서가있다. 'IMEI'는 별도의 토큰을 표시 할 필요가 없으므로 인덱싱하는 동안 KeywordAnalyser를 사용합니다.
부분에의 'IMEI'를 입력하여 문서를 검색 할 수 있습니다. 좋아, 해결할 수 있습니다, 그냥 접두사 또는 와일드 카드 쿼리에 사용자 문자열을 포장하고 검색을 수행합니다.
이제 사용자가 입력 한 요청에 해당하는 'IMEI'부분 만 강조 표시해야합니다. 그리고 여기에 나는 갇혔다. document.IMEI = 123456789054321, 그리고 사용자가 2345 입력 한 경우, 루씬은 항상 전체 토큰 강조 : ,하지만 필요한 1 2345 6789054321.
이 가능 이것을 달성하는 것입니다, 그렇다면 어떻게?
추신 :
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