2013-05-26 46 views
2

我正在將項目從solr轉換爲cloudsearch,並且遇到了一個問題,因爲在搜索了doc和web之後,我無法找到解決方法。我希望別人能幫助。根據輸入條件的頻率提升雲搜索結果

我無法描述真實的細節,但我能找到的最接近的例子是剽竊檢測。想象一下,將一堆發佈的文檔加載到cloudsearch中,然後以業餘文檔作爲查詢來查看是否匹配。

給定一個索引文件 - 維基百科說的暴龍頁:

像其他暴龍,霸王龍是兩足食肉動物與 由一個長,重尾平衡了大規模的頭骨。

然後來了業餘文檔:

我是一個食肉動物,和我喜歡的暴龍,因爲他是一個兩足食肉動物,太。

對於那些重要項目的原因,我創建的有趣的詞分佈,而不是完整的文本查詢,如:

carnivore: 2 
tyrannosaurus: 1 

而且我想給在維基百科文章中發現「肉食動物」這個詞更偏向於「暴龍」。

在solr中,我使用「^」運算符(例如, 「食肉動物^ 2」。

從我所能找到的,cloudsearch確實提升爲「排名表達式」,但我還沒有發現任何類似於我的問題。

任何想法?

回答

1

尋找Zipf定律(也有類似的稱爲Zipf-Mandelbrot定律但更難實現)基本上,對任何語言(特別是在每個特定領域)來說,詞頻的分佈服從於Zipfs發行。您可以創建一個詞頻列表,將其排序以適應zipf分佈,從中您可以調整分佈的參數並推斷術語相關性。

根據你的問題,我明白你正在實施某種td-idf,這比這更先進。不幸的是,我認爲你的問題更多的是出於計算機科學/語言學問題,它需要比我在這篇文章中寫的更多的解釋。

我不使用cloudsearch(我在自然語言處理項目工作過,但我不使用cloudsearch),但檢查周圍,我發現這個http://docs.aws.amazon.com/cloudsearch/latest/developerguide/rankexpressions.html

你可以建設齊普夫分佈(或任何定製/它的味道)與這些操作數,併爲您的排名定義一個門檻。

這不是一個「乾淨的代碼」的答案,但我希望它會幫助你。

+0

感謝您的回覆,並指向一些術語。不幸的是,一切都表明,排名表達式需要現有的領域進行操作,所以我不能根據輸入頻率調整分數。我仍然很驚訝Solr可以做一些雲端搜索看起來不能做的事情,並且沒有其他人正在討論它......再次感謝。 –