Si vous trouvez ce plugin utile, veuillez considérer un don pour montrer votre support!
www.paypal.com/cgi-bin/webscr?cmd=_send--money
Adresse PayPal: [email protected]
Ce plugin permet d'ajouter la recherche de texte complet intéressé booléen à n'importe quelle application Rails sans dépendances et une configuration minimale.
GEM 'ACTS_AS_INDEXED'
Installer bundle install . Fait.
./script/plugin install git: //github.com/dougal/acts_as_indexed.git
Si vous n'avez pas installé Git, mais que vous voulez toujours le plugin, vous pouvez télécharger le plugin à partir de la page GitHub (github.com/dougal/acts_as_indexed) et le décomposer dans le répertoire vendor/plugins de votre application Rails.
Lors de la mise à niveau vers une nouvelle version d'ACTS_AS_INDEXED, il est recommandé de supprimer le répertoire d'index et de le reconstruire.
Ajoutez acts_as_indexed en haut de tous les modèles que vous souhaitez indexer, ainsi qu'une liste des champs que vous souhaitez indexer.
Classe Post <activeRecord :: Base ACTS_AS_INDEXED: Fields => [: Title ,: Body] ... fin
Les champs ne sont pas limités aux champs du modèle, mais peuvent être n'importe quelle méthode d'instance du modèle actuel.
Utilisateur de classe <activeRecord :: Base
ACTS_AS_INDEXED: Fields => [: Adresse ,: FullName]
def fullname
self.firstname + '' + self.lastname
fin
...
finToute des options de configuration dans la section de configuration supplémentaire peut être ajoutée à l'appel de méthode ACTS_AS_INDEXED. Ceux-ci remplaceront toutes les valeurs par défaut ou la configuration globale.
Vous pouvez spécifier Proc qui doit évaluer à TRUE avant que l'élément ne soit indexé. Ceci est utile si vous voulez que les articles avec un certain état soient inclus. Le PROC est passé l'instance de l'objet actuel afin que vous puissiez tester contre cela.
Par exemple, si vous avez une colonne visible qui est fausse si le post est masqué, ou vrai s'il est visible, vous pouvez filtrer l'index en faisant:
Classe Post <activeRecord :: Base
ACTS_AS_INDEXED: FIELDS => [: Titre ,: Body] ,: if => Proc.New {| Post | post.Visible? }
...
fin Pour rechercher avec les correspondances les plus pertinentes apparaissant en premier, appelez la méthode find_with_index sur votre modèle, en passant une requête comme premier argument. Le paramètre ids_only facultatif, lorsqu'il est défini sur true, ne renvoie que les ID de tous les enregistrements correspondants.
# Renvoie le tableau d'objets postaux ordonnés par pertinence. my_search_results = post . find_with_index ( «ma requête de recherche» ) # Passez l'une des options de recherche ActiveRecord à la recherche. my_search_results = post . find_with_index ( 'ma requête de recherche' , { : limite => 10 }) # renvoie les 10 premières correspondances. # Renvoie le tableau d'ID ordonné par pertinence. my_search_results = post . find_with_index ( 'ma requête de recherche' , {}, { : ids_only => true }) # => [12,19,33 ...
Si la pertinence des résultats n'est pas importante, appelez la portée nommée with_query sur votre modèle, passant une requête comme argument.
# Renvoie une table d'objets post-post. my_search_results = post . avec_Query ( «My Search Query» ) # Chaîne-le avec n'importe quel nombre de méthodes ACTIVERECORD ET NAGMED_SCOPES. my_search_results = post . publique . avec_Query ( «My Search Query» ). Rechercher ( : tout ,: limite => 10 ) # Renvoyez les 10 premiers matchs qui sont publics.
Les opérateurs de requête suivants sont pris en charge:
Il s'agit de l'option par défaut. «Cat Dog» trouvera des disques correspondant à «chat» et à «chien».
«Cat -dog» trouvera des disques correspondant à «chat» et non à «chien»
«Cat + Me» trouvera des enregistrements correspondant à «chat» et «moi», même si «moi» est plus petit que le min_word_size
Les termes cités sont appariés en phrases. "Cat Dog" "trouvera des enregistrements correspondant à toute la phrase. Les termes cités peuvent être précédés par l'opérateur non; 'Cat - "Big Dog"' etc. Les termes cités peuvent inclure des mots plus courts que le min_word_size .
Les termes qui commencent par ^ correspondront aux enregistrements qui contiennent un mot commençant par le terme. '^ Cat' trouvera des matchs contenant «chat», «catapulte», «chenille» etc.
Un terme cité qui commence par ^ correspond à toute phrase qui commence par cette phrase. '^ "Cat D"' trouvera des disques correspondant aux phrases entières "Cat Dog" et "Cat Dinner". Ce type de recherche est utile pour les entrées de saisie semi-automatique.
La pagination est prise en charge via la méthode paginate_search dont le premier argument est la requête de recherche, suivie de tous les arguments standard de Will_paginate.
@images = image . paginate_search ( 'girl' , : page => 1 , : per_page => 5 )
Étant donné que with_query est une portée nommée, WillPaginate peut être utilisé de manière normale.
@images = image . avec_Query ( «fille» ). Paginate ( : page => 1 , : per_page => 5 )
Un bloc de configuration peut être fourni dans vos fichiers environnementaux ou initialiseurs. Exemple montrant la modification de la taille du mot min:
ActasAndexed . Configurer DO | config | config . min_word_size = 3 # Plus de configuration selon les besoins ... fin
Un aperçu complet des options de configuration disponibles peut être trouvée dans lib/acts_as_indexed/configuration.rb
Agit comme indexé prend en charge Heroku prêt à l'emploi. L'index est créé dans le répertoire TMP, qui est la seule partie inscriptible du système de fichiers Dyno Heroku. Veuillez lire la documentation d'Héroku (DevCenter.heroku.com/articles/read-only-filesystem) concernant leur système de fichiers.
Consultez la documentation RDOC en ligne.
Tout ce qui précède est le bienvenu. [email protected]
Un grand merci à tous les contributeurs de cette bibliothèque. Sans eux, beaucoup de bugs et de fonctionnalités ne seraient pas arrivés.
Douglas F Shearer - Douglasfshearer.com
Thomas Pomfret
Philip
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 Kopf
Pour le moment, ACTS_AS_ASDEXED ne fonctionne qu'avec des caractères Unicode lorsqu'il est utilisé de la manière suivante:
https://gist.github.com/193903bb4e0d6e5debe1
J'ai réécrit le processus de tokenisation pour permettre une manipulation plus facile à l'avenir.