2010-06-28 4 views
0

속성 값이 "John M Doe"인 "John Doe"와 같은 키워드에 대해 컬렉션을 쿼리하려면 어떻게해야합니까? 들어있는 것을 포함하는 것은 효과가 없지만 아래는 내가 무엇을했는지에 대한 아이디어입니다. people은 참조를 위해 Name 및 Description 속성을 가진 Person 객체를 포함하는 List입니다.전체 텍스트 검색을위한 LINQ 쿼리

답변

0

검색 용어를 토큰으로 나누어 개별적으로 검색 할 수는 있지만 지금까지만 가능합니다. 더 복잡한 변형은 처리하지 못할 수 있습니다. 정규 표현식을 만들 수는 있지만 더 복잡한 경우를 반드시 포착 할 필요는 없습니다.

사소한 매칭 지원 이상의 것이 필요한 경우, 비교 및 ​​검색 기능이 풍부한 Lucene.NET을 조사하고 싶을 수 있습니다. Lucene은 Linq에 대한 일부 지원을 포함하므로 일부 쿼리를 유지 관리 할 수 ​​있습니다.

+0

링크의 경우 같은 소리입니다 깨진 : [새 Lucene.net 링크 (http://incubator.apache.org/lucene.net/) – Tr1stan

1
bool MatchKeywords(string keyWord, string text) { 
    var tokens = keyWord.Split(new char[]{' '}, StringSplitOptions.RemoveEmptyEntries).Select(s=>s.Trim().ToLower()); 
    return tokens.Any(t => text.ToLower().Contains(t)); 
} 


//... 

string keyword = "John Doe"; 

var q = from person in people 
     where MatchKeywords(keyword, person.Name) 
     select person; 
관련 문제