2010-06-30 34 views
6

Zaimplementowałem wyszukiwanie pełnotekstowe za pomocą Sphinx i Thinking Sphinx. Chcę dodać kolumnę mądrego wyszukiwania. Niektóre rzeczy jak :-(biorąc przykład przepełnienie stosu)Jak zaimplementować wyszukiwanie, takie jak przepełnienie stosu

Załóżmy, że chcemy zobaczyć formami działalności związanej z Tobą właśnie typu:

user:me 

Następnie powróci wynik ze wszystkich pytań i odpowiedzi związanych do piemesonów.

Jeśli wpiszesz

votes:15 

następnie zwróci wynik ze wszystkich pytań z tagami mające więcej niż 15 głosów.

A jeśli wpiszesz

user:me votes:15 

następnie powróci na wszystkie pytania i odpowiedzi należące do was z ponad 15 głosów.

Jak mogę to wdrożyć?

Obecnie moje wyniki wyszukiwania są oparte na wyszukiwaniu pełnotekstowym. W jaki sposób można włączyć te funkcje?

Jakieś opcje dostępne w Sphinx lub Solr lub jakiejkolwiek innej wyszukiwarce?

Odpowiedz

2

:with opcja myślenia Sfinksa.

Przede wszystkim musisz zdefiniować te atrybuty w definicji indeksu (check out attributes section here).

has views_count, :as => :views, :type => :integer 
has user.id, :as => :user, :type => :integer 

Następnie można wyszukiwać na stanowiska takie jak ten:

Post.search '', :with => {:views => 12..maxint, :user => User.first.id} 

(nie jestem pewien, czy istnieje bardziej elegancki możliwość dawania otwartych zakresów, ale 12..max_int powinno wystarczyć)

dwie ważne rzeczy:

  1. jeśli chcesz liczyć obiekty towarzyszące (np wskazań), należy użyć licznika cache
  2. , czy „użytkownik” jest polimorficzny stowarzyszenie, polecam "CRC32(CONCAT(user_type, user_id))" zamiast user.id
Powiązane problemy