所有領域較少比方說,我有一個MongoDB的查詢,看起來像這樣:匹配比MongoDB的
result = db.collection.find(
{
'fruit_type': 'apple',
'fruit_name': 'macintosh'
'primary_color': 'red',
'sheen': 'glossy',
'origin_label': 'true',
'stem_present': 'true',
'stem_leaves_present': 'true',
'blemish': 'none',
'firmness': 'moderate'
}
)
這是很好,當我有完全符合這套標準,一些蘋果。然而,當我沒有符合這些標準時,我仍然想要蘋果。
比方說,唯一的強制性標準,這裏有'fruit_type': 'apple'
和'primary_color': 'red'
。
至於其他,我想匹配多個標準,可以儘可能地在不知道的時候什麼最匹配可能會提前。這不是「模糊匹配」。這更像是按字段「不精確匹配」。
例如,與'sheen': 'matte'
的結果,但與所有其他字段相同的值將是一個有效,但不精確的結果,給定沒有完全匹配。如果不精確,或者結果爲'stem_present': 'false'
會很好。換句話說:如果我指定了8個字段和值,並且沒有完全匹配,但是與其中的7個匹配,與6匹配並且匹配5,我想要7(而不是其他的)。如果我在亞馬遜水果搜索框中輸入「red macintosh apple no stem leaves matte finish」,它仍會顯示我紅蘋果,即使它只有光澤的蘋果。這是我想在用戶級重現的效果(假設自然語言查詢可以完全呈現在Mongo的查詢語言中)。
一個解決方案可能是編寫一個巨大的指定所有排列的查詢,但假設我有30個字段和許多值。我不想提前指定所有內容,因爲我不知道提前出現的查詢字段組合。
是否有退避優美(高效的)方式或具體退回到MongoDB中不精確的結果嗎?或者是超出查詢範圍的解決方案?
駕駛的downvotes沒有用。請解釋爲什麼這是一個糟糕的問題。 – bahmait
我只能猜測,但有些人傾向於將JavaScript看作沒有真正的編程語言。 ;)我個人認爲這是一個有趣的問題。 –
@MarkusWMahlberg謝謝,但不知道爲什麼這個問題給你帶來了JavaScript的問題。 – bahmait