
SolrDisMaxQuery::setPhraseFields 메서드는 Solr 쿼리에서 단어의 순서를 고려하여 검색하는 기능을 제공합니다.
이 메서드는 특정 필드에만 적용되도록 설정할 수 있습니다. 예를 들어, title 필드와 content 필드에만 적용되도록 설정하려면 다음과 같이 코드를 작성할 수 있습니다.
#hostingforum.kr
php
$query = new SolrDisMaxQuery();
$query->setPhraseFields('title', 'content');
또한, 소문자로만 검색하고 중복된 단어를 무시하고 싶다면, Solr 쿼리에서 제공하는 옵션을 사용할 수 있습니다.
#hostingforum.kr
php
$query->setLowercaseExpandsTerms(true);
$query->setAllowLeadingTrailingWildcard(true);
$query->setEnablePositionIncrements(false);
setPhraseFields를 사용한 쿼리 결과가 다른 쿼리 결과와 다른 점은, 단어의 순서를 고려하여 검색하기 때문에 결과가 달라질 수 있습니다.
예를 들어, title 필드에 "example"라는 단어가 있는 경우, setPhraseFields를 사용하지 않은 쿼리 결과는 "example"라는 단어를 포함하는 모든 문서를 검색할 수 있습니다. 그러나 setPhraseFields를 사용한 쿼리 결과는 "example"라는 단어의 순서를 고려하여 검색하기 때문에, title 필드에 "example"라는 단어가 있는 문서만 검색할 수 있습니다.
예시 코드에서 setPhraseFields를 사용한 쿼리 결과가 다른 쿼리 결과와 다른 점은, title 필드와 content 필드에만 적용되도록 설정했기 때문에, title 필드와 content 필드에 "example"라는 단어가 있는 문서만 검색할 수 있습니다.
#hostingforum.kr
php
$query = new SolrDisMaxQuery();
$query->setPhraseFields('title', 'content');
$query->setPhraseSlop(0.5);
$query->setQuery('example');
이 코드를 실행하면, title 필드와 content 필드에 "example"라는 단어가 있는 문서만 검색할 수 있습니다.
2025-05-24 15:25