2014-08-27 5 views
0

안녕하세요.Lucene 강조 표시 : 토큰 부분 강조 표시

주요 질문은 다음과 같습니다. Lucene이 토큰 스트림에서만 완전한 토큰 만 강조 표시 할 수 있다고 올바르게 이해 했습니까?

는 사실, 나는 다음과 같은 상황에 갇혀 :

  1. , 그것은 'IMEI'(15 자리 숫자)하자 일부 식별자 필드를 유지 가진 문서가있다. 'IMEI'는 별도의 토큰을 표시 할 필요가 없으므로 인덱싱하는 동안 KeywordAnalyser를 사용합니다.

  2. 부분에의 'IMEI'를 입력하여 문서를 검색 할 수 있습니다. 좋아, 해결할 수 있습니다, 그냥 접두사 또는 와일드 카드 쿼리에 사용자 문자열을 포장하고 검색을 수행합니다.

  3. 이제 사용자가 입력 한 요청에 해당하는 '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)); 

답변

1

이 포맷터 내 자신의 구현을 작성하여 문제를 해결 : 여기에 코드입니다.

+0

공유 할 수 있습니까? – serg