2011-12-22 11 views
0

私は太陽の宝石を使ってsolilsを使っている。私は "Radiohead"を見つけたいが、Sunspot/Solrを使って "Radiohead's"を見つけようとしない。

私は彫刻データのインデックスを作成中です。

は私のインデックスは、現在、そのように行われます。

searchable do 
    text :title, :boost => 3.0 do 
    title.gsub(/\'s\b/, "") 
    end 
    text :mentions do 
    mentions.map do |mention| 
     mention.title.gsub(/\'s\b/, "") 
    end 
    end 
end 

現在、私がしなければ:

Video.solr_search { fulltext '"Radiohead"' } 

Solrには、との結果が返されます:

Radiohead's 

Radiohead 

私が唯一見つけるしたいと思います:太陽黒点を経由してこれを行う方法は

Radiohead 

ありますか?

答えて

1

フィールドのフィールドタイプのアナライザーセクションで定義したフィルターをschema.xml(in .../solr/confディレクトリ)。ここでは例です:あなたが見ている行動は「ステミング」と呼ばれている

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer type="index"> 
      ... 
      <filter class="solr.SnowballPorterFilterFactory" language="English" /> 
     </analyzer> 
    </fieldType> 

- インデックス付きの値ではなく言葉そのものよりも、単語のある場合、それはです。たとえば、「飛行」、「飛行」、「飛ぶ」および「飛行」は、すべて「飛行」として索引付けされる。スノーボール(apacheのstemmer)のようなフィルタがある場合、あなたは見ている動作を取得します。フィルタを削除し、solrを再起動してからドキュメントを再索引付けしてみてください。

+0

素晴らしい、情報ありがとう。私は明日これを試して、報告する。 – lightyrs

0

あなたは(二重引用符を使用して)フレーズクエリ実行する必要があります。

Video.solr_search { fulltext '"Radiohead"' }. 

それとも、「レディオヘッドの」を分割しないように、あなたのSolrのschema.xmlを修正します。私はあなたのフィールド設定をここでは分かりませんので、詳細を提供することはできません。

+0

私の間違いは、これが実際に私がやっていることです。そのため、私はそれが機能していないのに驚いています。しかし、応答に感謝します。私は質問を編集します。 – lightyrs

関連する問題