2011-12-03 39 views
5

Tôi muốn thực hiện tìm kiếm đơn giản trong ứng dụng của mình, dựa trên truy vấn tìm kiếm mà tôi có. Giả sử tôi có một mảng chứa 2 đoạn văn hoặc bài viết và tôi muốn tìm kiếm trong các bài viết này cho chủ đề liên quan hoặc từ khóa liên quan mà tôi nhập.Cách triển khai tìm kiếm String đơn giản

Ví dụ:

//this is my search query 
string mySearchQuery = "how to play with matches"; 

//these are my articles 
string[] myarticles = new string[] {"article 1: this article will teach newbies how to start fire by playing with the awesome matches..", "article 2: this article doesn't contain anything"}; 

Làm thế nào tôi có thể nhận được bài viết đầu tiên dựa trên truy vấn tìm kiếm tôi cung cấp ở trên? Bất kỳ ý tưởng?

Trả lời

6

này sẽ trả lại bất kỳ chuỗi trong myarticles có chứa tất cả các từ trong mysearchquery:

var tokens = mySearchQuery.Split(' '); 
var matches = myarticles.Where(m => tokens.All(t => m.Contains(t))); 

foreach(var match in matches) 
{ 
    // do whatever you wish with them here 
} 
+0

Bạn có lẽ sẽ muốn làm một case-insensitive so sánh nếu kỹ thuật này được sử dụng (ví dụ như vậy Trận đấu phù hợp với trận đấu). ;) –

+0

Bạn có biết làm thế nào để so sánh, về tốc độ, với việc sử dụng regex ?? – GameAlchemist

+0

Bạn có thể cải thiện điều này bằng cách sử dụng string.ToLower(). Sau đó, bạn không phải lo lắng về cách viết hoa. –

1

Tôi chắc chắn bạn có thể sử dụng một khung làm đẹp để tìm kiếm chuỗi, vì nó là chủ đề rộng và có nhiều quy tắc tìm kiếm. Nhưng đối với mẫu đơn giản này, hãy thử tách truy vấn tìm kiếm bằng "", đối với mỗi từ thực hiện tìm kiếm chuỗi đơn giản, nếu bạn tìm thấy, hãy thêm 1 điểm vào kết quả tìm kiếm đoạn văn, ở cuối trả về đoạn văn với hầu hết các điểm ...

Các vấn đề liên quan