Railsアプリでの検索に思考スフィンクスを使用しています。「高さ」と呼ばれる浮動小数点フィールドがあります。このフィールドで正確な値 (つまり、6.5 ではなく正確に 6.0) を検索できるようにする必要があります。また、フィールドでソートできる必要があります。
私がこれまでに持っているもの:
indexes height, :sortable => true
問題: 正しくソートされず、'6' を検索すると 6.0 と 6.5 が返される
Railsアプリでの検索に思考スフィンクスを使用しています。「高さ」と呼ばれる浮動小数点フィールドがあります。このフィールドで正確な値 (つまり、6.5 ではなく正確に 6.0) を検索できるようにする必要があります。また、フィールドでソートできる必要があります。
私がこれまでに持っているもの:
indexes height, :sortable => true
問題: 正しくソートされず、'6' を検索すると 6.0 と 6.5 が返される
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 つの単語として読み取られます。したがって、残念ながら、その側面がエレガントに機能するとは思いません。