1

Railsアプリでの検索に思考スフィンクスを使用しています。「高さ」と呼ばれる浮動小数点フィールドがあります。このフィールドで正確な値 (つまり、6.5 ではなく正確に 6.0) を検索できるようにする必要があります。また、フィールドでソートできる必要があります。

私がこれまでに持っているもの:

indexes height, :sortable => true

問題: 正しくソートされず、'6' を検索すると 6.0 と 6.5 が返される

4

1 に答える 1

3

float 値を扱っている場合は、フィールドではなく属性として使用することをお勧めします。

define_index do
  # ... other fields

  has height
end

属性はデフォルトでソート可能です (実際、フィールドに :sortable を追加すると、Thinking Sphinx の内部で属性が作成されるだけです)、これによりソートが可能になります。

もちろん、これでは高さを検索できないため、フィールドも必要になります。

define_index do
  # ... other fields
  indexes height, :as => :height_field

  has height
end

フィールドと属性に同じ名前を付けることはできないため、フィールドにエイリアスを付けました。

これらすべてを考慮すると、フロートで検索していて、Sphinx にとってはすべてのフィールドが文字列です。6.5 は、ピリオドで区切られた 6 と 5 の 2 つの単語として読み取られます。したがって、残念ながら、その側面がエレガントに機能するとは思いません。

于 2009-05-18T23:37:17.310 に答える