나는 ElasticSearch와 Tire를 사용하여 몇 가지 기본 검색 기능을 수행하고 있지만 스노볼 스터 밍 분석기의 기본 구성은 저를 혼란스럽게합니다. 나는 거의 GitHub의 페이지에서 다음 코드 예제 해요 : https://github.com/karmi/tire타이어 라이브러리를 사용하여 스템밍
여기에 루비 샘플 파일 (루비 1.9.3, 타이어 1.8.25)이다 : 나는 항복이 예상 한 것
require 'tire'
Tire.index 'videos' do
delete
create :mappings => {
:video => {
:properties => {
:code => { :type => 'string' },
:description => { :type => 'string', :analyzer => 'snowball' }
}
}
}
end
videos = [
{ :code => '1', :description => "some fight video" },
{ :code => '2', :description => "a fighting video" }
]
Tire.index 'videos' do
import videos
refresh
end
s = Tire.search 'videos' do
query do
string 'description:fight'
end
end
s.results.each do |document|
puts "* #{document.code} - #{document.description}"
end
은 싸움과 싸움이 같은 줄기를 가지고 있기 때문에 경기의 두 기록.
* 1 - some fight video
이 기본 분석기 내가 구성하고있어 하나보다는 사용되고 있음을 나타냅니다 : 그러나, 그것은 단지 첫 번째 레코드를 반환합니다.
이 질문에 대한 쿼리 문자열 (ElasticSearch mapping doesn't work)의 실제 필드를 전달하고이 코드를 성공적으로 실행하여 ElasticSearch 설치가 정상적으로 처리되었음을 알고 있습니다.
Tire가이 쿼리에 대해 두 레코드를 반환하려면 무엇을 변경해야합니까? (즉, 여기서 형태소 분석이 어떻게 작동합니까?)