このプラグインが便利だと思う場合は、あなたのサポートを示すために寄付を検討してください!
www.paypal.com/cgi-bin/webscr?cmd=_send-money
PayPalアドレス:[email protected]
このプラグインを使用すると、Boolean-Queried FullText検索を、依存関係や最小限のセットアップでRailsアプリに追加できます。
gem 'acts_as_indexed'
bundle install実行します。終わり。
./script/pluginインストールgit://github.com/dougal/acts_as_indexed.git
gitがインストールされていないが、プラグインが必要な場合は、githubページ(github.com/dougal/acts_as_indexed)からプラグインをダウンロードして、Railsアプリのvendor/pluginsディレクトリに開梱できます。
ACTS_AS_INDEXEDの新しいバージョンにアップグレードする場合は、インデックスディレクトリを削除して再構築することをお勧めします。
インデックスを作成するフィールドのリストとともに、インデックスを作成するモデルの上部にacts_as_indexed追加します。
クラスPOST <ActiverCord :: Base acts_as_indexed:fields => [:title、:body] ... 終わり
フィールドはモデルフィールドに限定されませんが、現在のモデルの任意のインスタンスメソッドになります。
クラスユーザー<activerecord :: base
acts_as_indexed:fields => [:address、:fullname]
def fullname
self.firstname + '' + self.lastname
終わり
...
終わりACTS_AS_INDEXEDメソッド呼び出しに関して、さらに構成セクションの構成オプションを追加できます。これらは、デフォルトまたはグローバル構成をオーバーライドします。
アイテムがインデックス化される前に、TRUEに評価する必要があるPROCを指定できます。これは、特定の状態を持つアイテムのみを含める場合に役立ちます。 Procは現在のオブジェクトのインスタンスに渡されるため、それに対してテストできます。
たとえば、投稿が隠されている場合に偽の可視列がある場合、または表示されている場合は真の列がある場合、次のことでインデックスをフィルタリングできます。
クラスPOST <ActiverCord :: Base
acts_as_indexed:fields => [:title、:body]、:if => proc.new {| post | post.visible? }
...
終わり最初に表示される最も関連性の高い試合で検索するには、モデルのfind_with_indexメソッドを呼び出し、最初の引数としてクエリを渡します。オプションのids_onlyパラメーターは、TRUEに設定されている場合、一致するレコードのIDのみを返します。
#関連性によって注文されたポストオブジェクトの配列を返します。 my_search_results = post 。 find_with_index ( '私の検索クエリ' ) #ActiverCordのいずれかを検索に検索するオプションを渡します。 my_search_results = post 。 find_with_index ( 'my search query' 、{ :limit => 10 }) #最初の10試合を返します。 #関連性によって注文されたIDの配列を返します。 my_search_results = post 。 find_with_index ( 'my search query' 、{}、{ :ids_only => true }) => [12,19,33 ...
結果の関連性が重要でない場合は、モデルにwith_queryという名前のスコープを呼び出し、引数としてクエリを渡します。
#ポストオブジェクトの配列を返します。 my_search_results = post 。 with_query ( '私の検索クエリ' ) #任意の数のActivereCordメソッドとnamed_scopesでチェーンします。 my_search_results = post 。公共。 with_query ( 'my search query' )。 find ( :all 、 :limit => 10 ) #公開されている最初の10試合を返します。
次のクエリ演算子がサポートされています。
これがデフォルトのオプションです。 「猫の犬」は、「猫」と「犬」に一致するレコードを見つけるでしょう。
「猫 - ドッグ」は、「犬」ではなく「猫」に一致するレコードを見つけるでしょう
「cat +me」は、「私」がmin_word_sizeよりも小さいとしても、「猫」と「私」に一致するレコードを見つけるでしょう
引用された用語はフレーズとして一致します。 「「猫の犬」」は、フレーズ全体に一致するレコードを見つけるでしょう。引用された条件の前に、notオペレーターが先行することができます。 「猫 - 「ビッグドッグ」など、引用された用語には、 min_word_sizeよりも短い単語を含めることができます。
^で始まる用語は、用語から始まる単語を含むレコードと一致します。 '^cat'は、「猫」、「catapult」、「caterpillar」などのマッチを見つけます。
^で始まる引用された用語は、このフレーズで始まるフレーズと一致します。 '^“ cat d”'は、フレーズ全体に「猫の犬」と「猫の夕食」と一致するレコードを見つけます。このタイプの検索は、オートコンプリート入力に役立ちます。
ページネーションは、最初の引数が検索クエリであるpaginate_searchメソッドを介してサポートされ、その後にすべての標準のwill_paginate引数が続きます。
@images = image 。 paginate_search ( 'girl' 、 :page => 1 、 :per_page => 5 )
with_query指名された範囲であるため、Willpaginateは通常の方法で使用できます。
@images = image 。 with_query ( 'girl' )。 Paginate ( :page => 1 、 :per_page => 5 )
環境ファイルまたは初期化装置で構成ブロックを提供できます。最小単語サイズの変更を示す例:
ActsaSasIndexed 。 do |を構成しますconfig | config 。 min_word_size = 3 #必要に応じてより多くの構成... 終わり
利用可能な構成オプションの完全な概要はlib/acts_as_indexed/configuration.rbにあります。
インデックス付きの機能として機能します。インデックスはTMPディレクトリに作成されます。これは、Heroku Dynoファイルシステムの唯一の執筆可能な部分です。 Herokuのドキュメント(devcenter.heroku.com/articles/read-only-filesystem)については、ファイルシステムについてお読みください。
RDOCドキュメントをオンラインで表示します。
上記のすべては大歓迎です。 [email protected]
この図書館へのすべての貢献者に感謝します。それらがなければ、多くのバグフィックスと機能は起こらなかったでしょう。
Douglas F Shearer -Douglasfshearer.com
トーマス・ポンフレット
フィリップ・アーント
フェルナンダロペス
アレックス・コールズ
マイルズ・エフトス
エドワード・アンダーソン
Florent Guilleux
ベン・アンダーソン
Theron Toomey
uģisozols
ガブリエル・ナミマン
ローマ・サモイロフ
デビッド・ターナー
パスカル・フルニ
ライアン・コップ
現時点では、ACTS_AS_INDEXEDは、次の方法で使用された場合にのみUnicode文字で動作します。
https://gist.github.com/193903bb4e0d6e5debe1
将来、これを簡単に処理できるように、トークン化プロセスを書き直しました。