3
을 계산합니다. 나는 Linq.Count를 사용할 필요가LINQ 내가 잘 작동 다음 쿼리 한 발행 수
Count = (OccuranceInTitle * 5) + (OccurancesInBody)
나는 믿고있어하지만이 경우에 적용하는 방법을 잘 모르겠어요 : 나는 예를 들어,뿐만 아니라 제목에 찬성을 체중거야.
var query =
from a in q
from w in Words
let title = a.Title.ToLower()
let body = a.Body.ToLower()
let replTitle = Regex.Replace(title, string.Format("\\b{0}\\b", w), string.Empty)
let replBody = Regex.Replace(body, string.Format("\\b{0}\\b", w), string.Empty)
let titleOccurences = (title.Length - replTitle.Length)/w.Length
let bodyOccurences = (body.Length - replBody.Length)/w.Length
let score = titleOccurences * 5 + bodyOccurences
where score > 0
select new { Article = a, Score = score };
var results = query.GroupBy(r => r.Article)
.OrderByDescending(g => g.Sum(r => r.Score))
.Take(Settings.ArticlesPerPage);
계수의 발생이 string.Empty
으로 발생을 교체하고 결과 문자열의 길이를 기준으로 계산하는 (놀랍게도) 신속하고 더러운 방법으로 수행됩니다
나를 이길 :-) –
오, 좋은 영리한입니다! 심지어 자연스럽게 더 긴 단어의 무게를 더, 나는 그것을 좋아한다! 그냥 확인하러, title.Replace (w, string.Empty) 단어의 배열을 단어 것인가? –
이것은 위험합니다. 그것은 "The Boring Bookkeepers"라는 제목에서 "Book"을 센다. 그리고 마찬가지로 "a"는 "텍사스 아르마딜로의 당나귀"에서 과장되었습니다. – jason