Wenn Sie dieses Plugin nützlich finden, sollten Sie eine Spende in Betracht ziehen, um Ihre Unterstützung zu zeigen!
www.paypal.com/cgi --bin/webscr?cmd=_send-money
PayPal -Adresse: [email protected]
Mit diesem Plugin kann die Boolean-Volle-FullText-Suche einer Rails-App ohne Abhängigkeiten und minimales Setup hinzugefügt werden.
Gem 'acts_as_indexed'
bundle install . Erledigt.
./script/plugin installieren Sie Git: //github.com/dougal/acts_as_indexed.git
Wenn Sie Git nicht installiert haben, aber das Plugin dennoch möchten, können Sie das Plugin von der Github -Seite (github.com/dougal/acts_as_indexed) herunterladen und in das vendor/plugins -Verzeichnis Ihrer Schienen -App auspacken.
Wenn Sie auf eine neue Version von acts_as_indexed aktualisieren, wird empfohlen, das Indexverzeichnis zu löschen und es wieder aufgebaut zu lassen.
Fügen Sie acts_as_indexed zum oberen Teil der Modelle hinzu, die Sie indexieren möchten, zusammen mit einer Liste der Felder, die Sie indexiert werden möchten.
Klassenbeitrag <ActiveCord :: Basis ACTS_AS_INDEXED: fields => [: title ,: body] ... Ende
Die Felder sind nicht auf Modellfelder beschränkt, können jedoch jede Instanzmethode des aktuellen Modells sein.
Klassenbenutzer <ActiveCord :: Basis
ACTS_AS_INDEXED: fields => [: Adresse,: FullName]
Def Fullname
self.firstname + '' + self.lastname
Ende
...
EndeEine der Konfigurationsoptionen im weiteren Konfigurationsabschnitt kann hinsichtlich des Methodenaufrufs von ACTS_AS_INDEXED hinzugefügt werden. Diese werden alle Standardeinstellungen oder globale Konfigurationen überschreiben.
Sie können Proc angeben, das nach dem Indexieren des Elements nach dem Element bewertet werden muss. Dies ist nützlich, wenn Sie nur Artikel mit einem bestimmten Zustand enthalten möchten. Der Proc wird über die Instanz des aktuellen Objekts bestanden, sodass Sie dagegen testen können.
Wenn Sie beispielsweise eine sichtbare Spalte haben, die falsch ist, wenn der Beitrag versteckt ist, oder wahr, wenn sie sichtbar ist, können Sie den Index filtern, indem Sie:
Klassenbeitrag <ActiveCord :: Basis
ACTS_AS_INDEXED: fields => [: title,: body],: if => proc.new {| post | post.vissible? }
...
Ende Um mit den relevantesten Übereinstimmungen zu suchen, die zuerst angezeigt werden, rufen Sie die Methode find_with_index in Ihrem Modell auf und geben Sie eine Abfrage als erstes Argument über. Der optionale ids_only -Parameter gibt, wenn er auf TRUE festgelegt ist, nur die IDs der Übereinstimmungsdatensätze zurück.
# Gibt eine Reihe von Postobjekten zurück, die von Relevanz bestellt wurden. my_search_results = post . find_with_index ( 'meine Suchabfrage' ) # Übergeben Sie einen der ActiveCord -Optionen an die Suche. my_search_results = post . find_with_index ( 'Meine Suchabfrage' , { : limit => 10 }) # RETZEN SIE DIE ERSTEN 10 Übereinstimmungen. # Gibt eine Auswahl an IDs zurück, die von Relevanz bestellt wurden. my_search_results = post . find_with_index ( 'meine Suchabfrage' , {}, { : ids_only => true }) # => [12,19,33 ...
Wenn die Relevanz der Ergebnisse nicht wichtig ist, rufen Sie den mit dem Namen "Scope with_query in Ihrem Modell genannten Umfang an und geben Sie eine Abfrage als Argument.
# Gibt eine Reihe von Postobjekten zurück. my_search_results = post . With_query ( 'meine Suchabfrage' ) # Ketten Sie es mit einer beliebigen Anzahl von activerecord -Methoden und named_scopes. my_search_results = post . öffentlich . With_query ( 'meine Suchabfrage' ). Find ( : All ,: limit => 10 ) # RETZEN SIE DIE ERSTEN 10 AUFGABE, die öffentlich sind.
Die folgenden Abfragebetreiber werden unterstützt:
Dies ist die Standardoption. 'Cat Dog' findet Rekorde, die 'Katze' und 'Hund' passen.
'Cat -Dog' findet Rekorde, die 'Katze' und nicht 'Hund' passungen findet, und nicht "Hund"
"Cat +me" findet Platten, die 'Cat' und 'Me' übereinstimmen, auch wenn 'me' kleiner als die min_word_size ist
Zitierte Begriffe werden als Phrasen abgeglichen. "Cat Dog" wird Rekorde finden, die den gesamten Satz entsprechen. Zitierte Begriffe können dem Notoperator vorausgehen. 'Cat -"Big Dog" usw. Zitierte Begriffe können Wörter enthalten, die kürzer als die min_word_size .
Begriffe, die mit ^ beginnen, entsprechen Datensätzen, die ein Wort enthalten, das mit dem Begriff beginnt. '^Cat' werden Spiele finden, die 'Katze', 'katapult', 'Raupe' usw. enthalten.
Ein zitierter Begriff, der mit ^ mit jeglicher Ausdruck entspricht, die mit dieser Phrase beginnt. '^"Cat D" wird Rekorde finden, die den gesamten Sätzen "Cat Dog" und "Cat Dinner" entsprechen. Diese Art der Suche ist nützlich für automatische Eingaben.
Die Pagination wird über die paginate_search -Methode unterstützt, deren erstes Argument die Suchabfrage ist, gefolgt von allen standardmäßigen Will_Paginat -Argumenten.
@images = Bild . paginate_search ( 'Mädchen' , : Seite => 1 ,: per_page => 5 )
Da with_query ein benanntes Zielfernrohr ist, kann Willpaginat auf normale Weise verwendet werden.
@images = Bild . With_query ( 'Mädchen' ). paginate ( : Seite => 1 ,: per_page => 5 )
Ein Konfigurationsblock kann in Ihren Umgebungsdateien oder Initialisierern bereitgestellt werden. Beispiel, das zeigt, wie die min -Wortgröße geändert wird:
Actsasindexed . Konfigurieren Sie do | Konfiguration | Konfiguration . min_word_size = 3 # Mehr Konfiguration nach Bedarf ... Ende
Ein vollständiger Überblick über die verfügbaren Konfigurationsoptionen finden Sie in lib/acts_as_indexed/configuration.rb
Als Indexed unterstützt Heroku außerhalb des Boxs. Der Index wird im TMP -Verzeichnis erstellt, dem einzigen schriftlichen Teil des Heroku -Dyno -Dateisystems. Bitte lesen Sie Herokus Dokumentation (devCenter.heroku.com/articles/read-only-filesystem) bezüglich ihres Dateisystems.
Sehen Sie sich die RDOC -Dokumentation online an.
All das sind sehr willkommen. [email protected]
Ein großes Dankeschön an alle Mitwirkenden dieser Bibliothek. Ohne sie wären viele Fehler und Funktionen nicht passiert.
Douglas F Shearer - Douglasfshearer.com
Thomas Pomfret
Philip Arndt
Fernanda Lopes
Alex Coles
Myles eftos
Edward Anderson
Florent Guilleux
Ben Anderson
Theron Toomey
Uģis Ozols
Gabriel Namiman
Roman Samoilov
David Turner
Pascal Hurni
Ryan Koopf
Im Moment funktioniert ACTS_AS_INDEXED nur mit Unicode -Zeichen, wenn sie folgendermaßen verwendet werden:
https://gist.github.com/193903bb4e0d6e5debe1
Ich habe den Tokenisierungsprozess neu geschrieben, um in Zukunft eine einfachere Handhabung zu ermöglichen.