2017-12-04 3 views
1

문자열 형식의 lucene 쿼리 값을 수정하려는 요구 사항이 있습니다. 사용자 인터페이스에서 입력으로 lucene 쿼리를 가져 와서 탄성으로 전달합니다.Lucene 쿼리 수정

예 :

입력 : 이름 : "ABC"나이 : 26

출력 예상 : 이름 : "abcmodified"과 userage : 26

어떻게 분석하고 자바에서 문자열 형식의 루씬의 쿼리를 수정합니까?

답변

1

org.apache.lucene.queryparser.classic.QueryParser을 조사해 보셨습니까? 입력 문자열에서 Lucene Query Object를 반환하는 기능이 있습니다. 예 :

String rawQuery = "name:abc AND age:26"; 
QueryParser parser = new QueryParser(Version.LUCENE_45, null, new WhitespaceAnalyzer(Version.LUCENE_45)); 
BooleanQuery query = (BooleanQuery) praser.parse(rawQuery); 
query.clauses().get(0).setQuery(new TermQuery(new Term("name", "abcmodified"))); 
query.clauses().get(1).setQuery(new TermQuery(new Term("userage", "26"))); 
System.out.println(query); 

기본적으로 원하는 내용입니다. 분명히 쿼리 유형 (부울, 접두어, 용어, 퍼지 등)을 기반으로 쿼리를 순회하는 재귀 적 방법을 사용하여 더 똑똑한 처리를 수행 할 수 있습니다.

희망이 있습니다.