Ferret i pola wirtualne

Howgh!

Będzie więcej kodu niż gadania, bo już mnie krew zalewa.

Prosty model, gdzie chciałbym żeby ferret zaindeksował trochę danych innych niż te w samej tabeli:

[code=ruby]class UserAbout < ActiveRecord::Base
acts_as_ferret :fields => [:external_data]

def external_data
return “this is something i want to find right”
end
end[/code]

[code=ruby]>> UserAbout.find_with_ferret(“is”)
=> #<ActsAsFerret::SearchResults:0xb66b716c @total_hits=0, @total_pages=0, @results=[], @per_page=0, @current_page=nil>

UserAbout.find_with_ferret(“this”)
=> #<ActsAsFerret::SearchResults:0xb66ae418 @total_hits=0, @total_pages=0, @results=[], @per_page=0, @current_page=nil>

UserAbout.find_with_ferret(“something”)
=> #<ActsAsFerret::SearchResults:0xb66a5cb4 @total_hits=0, @total_pages=0, @results=[], @per_page=0, @current_page=nil>[/code]
Pomóżcie, szanowni, bo już ponad godzinę z tym walczę i próbowałem tak wielu opcji, że się odechciewa.

A, żeby było śmiesznej: w pliku index/development/user_about/_4.cfs znajduję słowa, po których próbuję znaleźć – czyli tak jakby ferret to zaindeksował, jeno AAF olewał?

U mnie to co napisałeś działa bez problemu.

ferret 0.11.6

acts_as_ferret pobrany z github’a kilka miesięcy temu

Oczywiście w konsoli robisz UserAbout.rebuild_index zanim zaczniesz wyszukiwać ?

Disregard, poradziłem sobie.

Tak, robiłem rebuild_index – zarówno z konsoli, jak i z rake taska. Problemem było to, że należało po zmianach w modelu/liście indeksowanych pól zrestartować całą konsolę railsową, a nie tylko zrobić reload!

Można zamknąć :wink:

Proste i banalne pytanie.
Dlaczego wyszukując w sposób
Article.find_with_ferret(“a”) dostaje w konsoli => []
a w sposób
Article.find_with_ferret("a’) zwraca mi oczekiwany wynik ?

Myślę, że dlatego, że w pierwszym przypadku przeszakuje całe wyrażenia, a w przypadku drugiego szuka pasującego ciągu w wyrażeniach. Nie używałem, ale wygląda na działanie podobne do LIKE i ‘%wyrażenie%’. Czyli ‘a*’ wyszuka Ci wyrażenie zaczynające się na “a”, natomiast ‘*a’ kończące się na “a”.

Poprawcie, jeśli się mylę.

skoro wątek się odkopał, to raczę zadać pytanie - czyż ferret nie jest “so 2oo9”, kiedy mamy sphinxa, xapiana i elastic search?

Jest dokładnie tak jak opisałeś :slight_smile:
Dzięki

mam mały problem
@article = Article.find_with_ferret(params[:keywords])
i teraz ferret wyszukuje mi całe wyrażenie, a nie bardzo wiem jak zrobić aby przeszukiwał mi ciągu wyrażeń

Dokładniej chodzi mi o to, że mam artykuły Artykul1, Artukul2 i jak wpiszę A, to nie znajduje nic a jak wpiszę Artykul1 to mi go oczywiście znajduje ale ja chciałbym żeby wyszukiwał mi wszystko na “A”
Jakieś pomysły?