9

強調表示の解決策を見つけるために、github: http://github.com/outoftime/sunspotのドキュメントを調べましたが、うまくいかないようです。

私の Job モデルには次のブロックのようなものがあります (意図的にいくつかのフィールドを省略しています):

  検索可能
    テキスト:名前

    文字列 :name, :stored => true
    時間:updated_at
    時間:created_at
    時間:expires_on

私はこれを持っています。これは結果を返します:

search = Sunspot.search(ジョブ) do
  キーワード 'Senior', :fields => "name", :highlight => true
終わり

=> 0, :fl=>"* スコア", :"hl.simple.pre"=>"@@@hl@@@", :qf=>"name_text", :rows=>30, :"hl .simple.post"=>"@@@endhl@@@", :hl=>"on", :q=>"先輩", :fq=>["タイプ:仕事"], :defType=>"ディスマックス"}>

ヒットをそのまま取得します:

>> search.hits
=> [#, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #]

これがクエリの結果で、名前が表示されています。

>> search.results.collect{|x| x.name}
=> ["Senior Associate, Executive Membership", "Senior International Costing Analyst", "Senior Process Engineer", "Deputy Senior Process Manager", "Senior Engineer (Rotating Equipment)", "Senior Technical Expert, Indonesia", "シニア プロセス エンジニア"燃焼エンジニア」、「シニアプロジェクトエンジニア/エンジニアリングマネージャー」、「シニアサブストラクチャー設計スペシャリスト、バングラデシュ」、「シニアスーパービジョンエンジニア(上部構造)、バングラデシュ」、「シニアプログラムおよび戦略開発アドバイザー-コンサルタント」、「シニアアソシエイト(天然資源Management Specialist)」、「Senior Manager (Agriculture Market Development、アフガニスタン)」、「Senior Material Engineer (Main Bridge)、バングラデシュ」、「Senior Resident Engineer (Main Bridge)、バングラデシュ」、「シニアレジデントエンジニア(メインブリッジ)、バングラデシュ」、「シニアマテリアルエンジニア(メインブリッジ)、バングラデシュ」]

ここに私の問題があります..ハイライトを取得すると、何も返されませんでした:

>> search.hits.collect{|x| x.highlight(:名前)}
=> [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]

これでも、ハイライト ヒットを返しません。

>> search.hits.collect{|x| x.ハイライト}
=> [[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[] 、[]]

他のフラグや引数がありませんか?

4

1 に答える 1

6

テキストフィールドが保存されているかどうかに関係していると思います。これは違いがありますか:

searchable do
    text :name, :stored => true
    ...

この例では、:body フィールドが次のように構成されています。

http://github.com/outoftime/sunspot-rails-example/blob/master/app/models/post.rb

:body フィールドは、ハイライトがコントローラーで照会されるフィールドです。

http://github.com/outoftime/sunspot-rails-example/blob/master/app/controllers/searches_controller.rb

それがうまくいくことを願っています!

于 2010-10-22T04:22:06.400 に答える