λλ¬Έμ DecimalField
Aμ μ μ₯ string
μΈλ±μ± μ¬μ©νλ©΄, μμλλ κ²°κ³Όλ₯Ό μμ±νμ§ μλ order_by
.
μ«μ κ°μΌλ‘ μ λ ¬νλ λμ λ°μ΄ν°λ₯Ό μνλ²³μμΌλ‘ μ λ ¬ν©λλ€.
Xapian λ°±μλ κ΄λ ¨ λ¬Έμ : https://github.com/notanumber/xapian-haystack/issues/84
μ΄ λ¬Έμ λ₯Ό (μ μνκ²) ν΄κ²°νλ κ°μ₯ μ’μ λ°©λ²μ order_by
κ° μ§μλμ§ μμμ λνλ΄λλ‘ DecimalField
λ¬Έμλ₯Ό μ
λ°μ΄νΈνλ κ²μ
λλ€.
μ₯κΈ°μ μΌλ‘ DecimalField
order_by
μμ
μ μλνλ©΄ WARNING λ 벨 λ‘κ·Έ λ©μμ§κ° μΆλ ₯λ μ μμ΅λλ€. μ±λ₯μμ μ΄μ λ‘ νλ μ ν νμΈμ μ¬μ΄νΈκ° DEBUG
λͺ¨λμΌ λλ§ μνν μ μμ΅λλ€.
μ΄μ λν ν κ°μ§ ν΄κ²° λ°©λ²μ 10μ§μ νλμ λ΄μ©μ μ μλ‘ μ μ₯νλ κ²μ λλ€. μλ₯Ό λ€μ΄ MyModelμ΄λΌλ λͺ¨λΈμ priceλΌλ Decimal νλκ° μλ κ²½μ° μμμ μ΄ν μλ¦Ώμλ₯Ό κ³±νμ¬ μ μλ‘ μ μ₯ν μ μμ΅λλ€.
class MyIndex(SearchIndex):
...
price = IntegerField(model_attr='price')
def prepare_price(self, obj):
return int(obj.price * Decimal('100'))
μ΄κ²μ elasticsearchμμλ μλνμ§λ§ solrμμλ μλνμ§ μλ κ² κ°μ΅λλ€.
λ²κ·Έλ λΆλͺ ν Whooshμλ μ μ©λ©λλ€.
λ²μ 쿼리λ Elasticsearchμμλ μ€ν¨ν©λλ€.
+1
SolrBackendλ₯Ό μ¬μ©νμ¬ μ΄μ λμΌν λ¬Έμ λ₯Ό κ²ͺμμ΅λλ€. 볡μ‘ν μ μ μκ³ λ¦¬μ¦μ λνλ΄λ 0.0 - 1.0 μ¬μ΄μ μ«μκ° ν¬ν¨λ νλλ₯Ό κΈ°μ€μΌλ‘ μ λ ¬ν©λλ€. λ¬Έμμ΄λ‘ μ λ ¬ν λ μ μκ° λ§€μ° μμ μμκ° μ μκ° ν° μμ(μ: 9e-08) μμ μ λ ¬λ©λλ€.
곡μ νκ², λͺ λ°±ν ν΄κ²° λ°©λ²μ λμ float νλλ₯Ό μ¬μ©νλ κ²μ λλ€(λ΄ λͺ©μ μλ λ³λ‘ μ€μνμ§ μμ).
μ΄κ²μ κ½€ λμ©λλ€. μμ λμ§ μκ³ "order_byκ° μλνμ§ μμ"μΌλ‘ λ¬Έμνλ κ²½μ° νλ μ νμ μ¬μ©νμ§ μκΈ°λ‘ νκ±°λ νλ μ ν λͺ©λ‘μ λͺ νν κ²½κ³ λ₯Ό νμν΄μΌ ν©λλ€. μ€μνκ³ ν° λ°μ΄ν°λ² μ΄μ€κ° μλ κ²½μ° λ³΅κ΅¬ μλκ° λ립λλ€.
Elasticsearchμμλ μλνμ§ μμ΅λλ€.
:+1:
@JoeJasinski μ λ§ κ°μ¬ν©λλ€. λ΅λ³μ΄ λμμ΄ λμμ΅λλ€.
μ΄μ λν ν κ°μ§ ν΄κ²° λ°©λ²μ 10μ§μ νλμ λ΄μ©μ μ μλ‘ μ μ₯νλ κ²μ λλ€. μλ₯Ό λ€μ΄ MyModelμ΄λΌλ λͺ¨λΈμ priceλΌλ Decimal νλκ° μλ κ²½μ° μμμ μ΄ν μλ¦Ώμλ₯Ό κ³±νμ¬ μ μλ‘ μ μ₯ν μ μμ΅λλ€.
class MyIndex(SearchIndex): ... price = IntegerField(model_attr='price') def prepare_price(self, obj): return int(obj.price * Decimal('100'))
κ·Έλ¦¬κ³ ?
MyIndex.objects.all().order_by('prepare_price')
? μ€λ₯Έμͺ½?
κ°μ₯ μ μ©ν λκΈ
μ΄μ λν ν κ°μ§ ν΄κ²° λ°©λ²μ 10μ§μ νλμ λ΄μ©μ μ μλ‘ μ μ₯νλ κ²μ λλ€. μλ₯Ό λ€μ΄ MyModelμ΄λΌλ λͺ¨λΈμ priceλΌλ Decimal νλκ° μλ κ²½μ° μμμ μ΄ν μλ¦Ώμλ₯Ό κ³±νμ¬ μ μλ‘ μ μ₯ν μ μμ΅λλ€.