2017-03-29 39 views
0

比方說,我們有兩個對象的索引:對象,具有更長的字段中返回針對對象與短場

{ 
"name": "iPhone 6s Plus big screen, super fast, ultra responsive, blah blah" 
} 

和:

{ 
"name" : "iPhone 6s Plus" 
} 

現在,當我搜索iPhone 6s Plus,它會返回第一個沒有意義的對象,因爲第一個對象比給定查詢的第二個對象包含更多的單詞(或噪音)。換句話說,出現在短名稱字段中的術語應該比長名字段中出現的相同術語攜帶更多的排名點

Algolia使用TF/IDF算法,該算法考慮到字段長度範數,所以第二個對象應該有比第一個更高的分數。

那麼爲什麼第一個對象比第二個對象有更高的分數呢?有沒有我缺少的設置選項?

+0

阿爾戈利亞採用了幾種不同標準的打破平局算法。在這裏看到更多的信息:https://www.algolia.com/doc/guides/relevance/ranking/#ranking-formula-a-tie-breaking-algorithm –

+0

@JoshDzielak謝謝你!我發佈了一個答案,隨意編輯它,如果你喜歡,因爲它可以幫助別人!謝謝! – flienky

回答

0

我找到了答案,但我不確定它是否100%正確,或者是否有更好的方法來實現此目的。

登錄Algolia - >選擇您的實例 - >進入排名 Tab。

排名公式中,添加一個新行。新行應該有屬性類型{{列的名稱,在本例中是「title」}}並將其設置爲升序

因此,你將實現我們正在尋找的東西。

+0

這將強制按此字段的全部值進行排序,這將適用於此案例,但可能會導致其他問題 - 這樣做可能會覆蓋您指定的任何自定義排名。 –

0

一種選擇是將值分解爲兩個不同的屬性,一個用於產品名稱,另一個用於描述。這樣做還可以讓您在可搜索屬性中優先考慮產品名稱,這在大多數情況下會導致更好的相關性。