2013-10-15 33 views
-1

我希望ElasticSearch返回獨立於大小寫的結果分數。舉個例子,假設我查詢字符串「HOUSE」或(「家」),我得到如下結果:如何讓ElasticSearch返回獨立於大小寫的分數?

"House" => score: 0.6868894, "House on the hill" => score: 0.52345484 "HOUSE" => score: 0.52200186

在一個理想的世界中,無論是「豪斯醫生」和「家」將有一個得分1.0和「山上的房子」得分爲0.5。

到目前爲止,我已嘗試添加一個custom analyser,現在正在查看omit_norms選項。我也在考慮模式,因爲他們有一個CASE_INSENSITIVE標誌。不幸的是我發現的官方文檔缺乏的例子和代碼片段...

任何人都可以提供包括實現分數獨立情況下所需的參數查詢的代碼片段/例子嗎?任何人都可以使用Tire for Rails提供解決方案。

MAPPING mapping _source: {} do indexes :id, type: 'integer' indexes :value, :analyzer => 'string_lowercase' end

**分析器被上述

QUERY { "query": { "filtered": { "query": { "query_string": { "query": "house" } } } }, "fields": ["value"], "from": 0, "size": 50, "sort": { "_score": { "order": "desc" } }, "explain": true }

ElasticSearch 0.90.5提到定製分析儀; Rails 4.0.0; 輪胎(寶石)0.6.0

+0

的情況下,敏感性並沒有任何與你的問題,取決於你如何分析你的數據。如果使用默認的ES,一切都是小寫,因此分差是由別的東西造成的,看看解釋輸出知道更多。 – javanna

回答

0

更好的是,這個問題是由ES使用許多(默認爲5)碎片來評分文件,每個碎片只使用分配給它的文件來計算它的得分。由於我使用的是測試數據,而我的數據庫實際上是空的,因此得分完全關閉。答案是使用dfs_query_then_fetch搜索類型(至少在開發時)。仍在尋找如何在Rails/Tire中實現或在ES中設置爲默認值。

乾杯, 網卡

+0

我理解你的問題是什麼,但我認爲這是不probperly在你的問題中描述,這就是爲什麼你的問題和答案沒有任何與對方。也許你可以改進你的問題,並詳細說明你的問題,這肯定會導致你的答案。 – javanna

相關問題