lucene query 예제

Sem imagem cadastrada

여기서는 `title` 및 `body` 두 개의 필드가 있는 간단한 문서를 인덱스에 추가한 다음 검색 쿼리를 사용하여 동일한 문서를 검색하려고 합니다. 이제 루세네와일드카드쿼리데모 클래스를 살펴보겠습니다. 이 클래스는 위에서 언급 한 텍스트 파일을 기반으로 createIndex() 메서드를 통해 인덱스를 만들고 이 후에는이 인덱스에 대해 8 개의 와일드 카드 검색을 수행하려고 시도합니다. 검색 중 4개는 WildcardQuery 클래스를 사용하여 수행되고 나머지 4개는 QueryParser 클래스를 사용하여 수행됩니다. 이러한 예제는 Lucene 쿼리 구문을 사용합니다. lucene이 쿼리 언어로 선택되면 Elasticsearch 쿼리 DSL을 사용하여 쿼리를 제출할 수도 있습니다. 다음 네 개의 쿼리는 QueryParser를 활용합니다. 쿼리파서 쿼리의 첫 번째 에서는 PhraseQuery대신 부울 쿼리를 가져옵니다. 이는 QueryParser의 구문 분석() 메서드 “”감자 튀김”이 아닌 “감자 튀김”을 전달했기 때문입니다. QueryParser가 PhraseQuery를 생성하려면 검색 문자열을 큰따옴표로 둘러싸여야 합니다. 다음 쿼리는 “”fries”를 검색하며 기본 슬롭이 0인 PhraseQuery를 생성하고 쿼리에 대한 응답으로 1 조회를 얻는 것을 볼 수 있습니다.

이제 Lucene 검색 작업에 대한 RangeQuery를 구현하려면 기본적으로 범위의 시작을 나타내는 용어인 범위의 끝을 나타내는 용어가 필요한 생성자인 searchIndexWithRangeQuery()라는 메서드를 추가해야 합니다. 및 검색이 시작 및 끝 값(“true”)을 포함하거나 시작 및 끝 값(“false”)의 배타적임을 나타내는 부울 값입니다. 코드는 lucene 와일드 카드 쿼리의 이전 예제에서 두 개의 텍스트 파일을 기반으로 검색 작업을 수행한 것처럼 보입니다. 이제 우리는 루센에서 PhraseQuery를 사용하여 일치하는 구를 찾으려고 노력할 것입니다. 필드가 기본 필드로 가정되고 생략된 문자열에 쿼리를 인쇄합니다. “foo bar”~10000000과 같은 쿼리는 foo AND bar에 대한 흥미로운 대안입니다. 쿼리 구의 단어 간에 허용되는 다른 단어 수를 “slop”이라고 합니다. setSlop 메서드를 호출하여 설정할 수 있습니다.