2015-10-20 72 views
0

我想弄清楚如何使用多個字段/術語實現「基於強度的搜索」。例如:基於強度的搜索多個術語

搜索:

  • 號碼腿:4
  • 擁有毛皮:真
  • 有蹄:真
  • 關鍵詞:武

結果:

  • [高]牛
  • [中]貓
  • [中]狗
  • [低]無毛鼴鼠
  • [未賽]鳥

可能值得一提的是,我的實際模型中的標準有些權重,相關性和結構性。

我選擇的語言是C#.NET,我使用的是LINQ + Fluent NHibernate。我一直在用幾種不同的方式來實現這一點,但大多數人感覺笨拙。目前,我使用的數據庫擁有超過10萬個「動物」,並且可以在大約15個字段上進行搜索。

問題:

請問這種搜索有名字嗎?

在嘗試實施時應該注意哪些最佳實踐或技巧?

什麼是一些高性能的方式來實現這樣的搜索?僞代碼和一般邏輯與代碼一樣受到讚賞。

+1

http://stackoverflow.com/questions/177753/search-ranking-relevance-algorithms –

+1

你可以使用SQL Server的全文搜索產生的關鍵字相關性分數,併合並與您向布爾生成綜合關聯分數。這應該使你的搜索很快。 –

回答

1

你在說「weighted term query」。

既然你已經在使用LINQ,我以爲MSSQL,你最快的解決辦法可能是寫一個存儲過程(你將最終與LINQ調用),它使用全文搜索功能(CONTAINSTABLEISABOUT),以「等級「結果如你所願。


如果你希望重搜索流量或你的排名要求越來越複雜得多,或者您的收藏增長顯著你應該考慮打破這個功能伸到像Solr的或Elasticsearch搜索引擎。

相關問題