강조 표시를 위해 Lucene Query에서 쿼리 용어를 가져옵니다
-
23-08-2019 - |
문제
내 Lucene Queries는 일반적으로 많은 필드와 결합 된 필드가 있습니다. 쿼리 된 필드를 쿼리 객체에서 다시 꺼낼 수 있습니까?
올바른 솔루션이 없습니다
다른 팁
이용 약관이나 필드 이름을 추출한다는 뜻입니까? 부울 쿼리를 다루고 있다는 것을 이미 알고 있으므로 필드를 추출하기 위해 BooleanQuery.getClauses ()에 의해 반환 된 부울 클레이스트 배열을 반복하고 각 절을 기본 쿼리 (query.rewrite)로 다시 작성하고 Emquery가있을 때까지 재발 명령으로 적용 할 수 있습니다. 당신의 손에.
용어 추출을 의미한다면 Lucene.net에 대해 잘 모르겠지만 Java Lucene에서는 org.apache.lucene.search.highlight.querytermextractor를 사용할 수 있습니다. 당신은 getterms 과부하 중 하나에 (다시 작성된) 쿼리를 전달하고 가중치가 많은 배열을 얻습니다.
내가 기억하는 한,이 기술 사용의 단점은 다음과 같습니다.
- 내부적으로 용어 세트를 사용하기 때문에 동일한 토큰의 여러 인스턴스를 처리하지 않습니다.
- 기본 쿼리 유형 (termquery, booleanQuery 및 query.extractterms를 지원하는 기타 쿼리 유형) 만 지원합니다. 나는 우리가 Spannearquery 및 SpannearorderedQuery 인스턴스에 내부적으로 사용했다고 생각하지만, 이것에 대해 잘못되었을 수 있습니다.
어느 쪽이든 나는 이것이 당신을 시작하기에 충분하기를 바랍니다.
제휴하지 않습니다 StackOverflow