1

나는 다음과 같은 조건을 items 테이블에서 검색의 3 가지를 수행해야합니다동적 조건에서 Sphinx 검색을 사용할 수 있습니까? 내 웹 응용 프로그램에서

  1. items.is_public = 1이 (인덱싱 title 필드를 사용) - 결과의 많은 기수가 훨씬 높다 (검색 할 수 있습니다 일반적으로 100 개 미만 결과

  2. -) 다른 경우에 비해

  3. items.category_id = {X}은 (색인에 대한 title + private_notes 필드)를 사용 나는이 모든 경우에 스핑크스 작업을 할 수있는 방법을 찾을 수 없습니다 일반적으로 100 개 미만 결과

하지만 첫번째 경우에서 잘 작동 -(색인에 대한 title + private_notes 필드를 사용). 스핑크스를 첫 번째 경우에만 사용해야하고 MySQL에서 평범한 오래된 "느린"FULLTEXT 검색을 사용해야합니까? (적어도 2-3 가지 경우의 하위 카디널리티 때문에)?

아니면 그냥 나와 스핑크스가 거의 모든 것을 할 수 있습니까?

답변

1
내가 뭔가를 누락 될 수 있습니다 귀하의 모델의 전체 지식없이

하지만 방법이있다 :

class item < ActiveRecord::Base 
    define_index do 
    indexes :title 
    indexes :private_notes 
    has :is_public, :type => :boolean 
    has :category_id 
    has :user_id 
    end 
end 

1)

Item.search(:conditions => {:title => "blah"}, :with => {:is_public => true}) 

2)

Item.search("blah", :with => {:category_id => 1}) 

3)

Item.search("blah", :with => {:user_id => 196}) 
+0

감사합니다. 나는 think_sphinx가 Ultrasphinx 보석보다 훨씬 강력하다는 것을 알았습니다. 따라서 스핑크스가 아닌 FULLTEXT 검색으로 전환 할 필요가 없습니다. – ep3static