나는 Lucene을 사용하여 문장 세트를 인덱싱합니다. 내 쿼리는 두 개의 "단체"로하고이 같은 근접 쿼리를 만들 :Lucene 근접 식 쿼리에서 텍스트 검색
"EntityA EntityB"~22
와 나는 22 개 문자의 최대 범위에서이 두 가지 요소를 포함 된 모든 문장을 검색 할 수 있습니다. 이제 Lucene Highlighter를 사용하여 두 엔티티 사이의 단어를 검색하려고합니다. 조각 같은 내용으로 분할하는 코드를 사용하고 있지만 두 엔티티 사이의 정확한 지점에서 조각을 설정하는 방법을 모르겠습니다.
for (int i = 0; i < numTotalHits; i++) {
int id = hits[i].doc;
Document doc = searcher.doc(hits[i].doc);
String text = doc.get("content");
TokenStream tokenStream = TokenSources.getAnyTokenStream(searcher.getIndexReader(), id , "content", analyzer);
String[] frag = getFragmentsWithHighlightedTerms(analyzer, query, "content", text, 10, 10);
for (int j = 0; j < frag.length; j++) {
System.out.println((frag[j].toString()));
}
예를 들어, 기업 내부의 텍스트를 검색 할 수 있도록 목표로 내 :
entity1 --> Canada
entity2 --> Ottawa
sentence --> Natural Resources Canada, Canadian Forest Service, Ottawa.
result --> , Canadian Forest Service,