문제

내 Lucene Queries는 일반적으로 많은 필드와 결합 된 필드가 있습니다. 쿼리 된 필드를 쿼리 객체에서 다시 꺼낼 수 있습니까?

올바른 솔루션이 없습니다

다른 팁

이용 약관이나 필드 이름을 추출한다는 뜻입니까? 부울 쿼리를 다루고 있다는 것을 이미 알고 있으므로 필드를 추출하기 위해 BooleanQuery.getClauses ()에 의해 반환 된 부울 클레이스트 배열을 반복하고 각 절을 기본 쿼리 (query.rewrite)로 다시 작성하고 Emquery가있을 때까지 재발 명령으로 적용 할 수 있습니다. 당신의 손에.

용어 추출을 의미한다면 Lucene.net에 대해 잘 모르겠지만 Java Lucene에서는 org.apache.lucene.search.highlight.querytermextractor를 사용할 수 있습니다. 당신은 getterms 과부하 중 하나에 (다시 작성된) 쿼리를 전달하고 가중치가 많은 배열을 얻습니다.

내가 기억하는 한,이 기술 사용의 단점은 다음과 같습니다.

  • 내부적으로 용어 세트를 사용하기 때문에 동일한 토큰의 여러 인스턴스를 처리하지 않습니다.
  • 기본 쿼리 유형 (termquery, booleanQuery 및 query.extractterms를 지원하는 기타 쿼리 유형) 만 지원합니다. 나는 우리가 Spannearquery 및 SpannearorderedQuery 인스턴스에 내부적으로 사용했다고 생각하지만, 이것에 대해 잘못되었을 수 있습니다.

어느 쪽이든 나는 이것이 당신을 시작하기에 충분하기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top