2013-02-15 45 views
1

許多網站,特別是零售網站允許您按價格按照「相關性」進行排序。我將根據您搜索的單詞數量,以及與數據庫匹配的單詞數量來設想這種方式。使用Linq計算實體框架中的匹配詞彙

例如,如果我的關係數據庫有一個搜索詞表和一個特定的產品,3個詞是表,網球,俱樂部,我在網站上搜索乒乓球大廳,我會有66%的準確性爲2的3匹配。

我需要這個功能,但我使用EF並且不知道從哪裏開始。所以,字面意思是我在%('準確性分數'或相關性)之後。

我很高興地顯示我的代碼,但說實話我得到的感覺扔在頁面上的70行代碼只是爲了證明我試過的東西不會受益任何人,所以如果你想代碼,我會展示它,如果沒有,任何人都可以給我任何指示或甚至短語給谷歌?

+0

我不確定,但是,您可能有興趣查看[Lucene](http://blogs.apache.org/lucenenet/)。 – 2013-02-15 19:29:06

回答

0

假設這是一個SQL Server項目,您可以從檢索全文搜索/全文目錄開始。將這些與CONTAINSTABLEFREETEXTTABLE搜索結合使用將返回一個分數,該分數是衡量相對相關性而非百分比的度量。從EF的角度來看,我最終發現最簡單的解決方案是調用存儲過程,以便在EF之外獲得排名結果(分數和ID),然後通過ID從上下文加載對象。我寫了一個半複雜的存儲過程,允許我根據包含字段的相關性來衡量我的結果。我在這裏發佈了一些關於我的問題:Code-First Entity Framework w/ Stored Procedure returning results from complex Full-text Searches

+0

hmmmm。我使用EF越多,我越感覺到它的侷限性。是的,擁有地圖很好,這是值得的重量,但在其他地方非常有限。我想這就是爲什麼我們不應該僅僅因爲它易於安裝等而使用它。謝謝你的好回答,雖然在這種情況下,我在SQL Express上! (抱歉沒有明確說明) – Dave 2013-02-19 08:48:01