我正在实现简单的搜索引擎。所有数据都保存为文本文件中的JSON。我的实现方案是,如果我搜索像'rock'这样的单词方法应该返回结果作为包含'rock'值的标签ID的列表。我一直在寻找示例代码但是在每个例子中他们按标签搜索如track_id“但我需要搜索按价值。 这是我的示例JSON数组..
测试词:摇滚 预期成果:991335,991336,991337
答案 0 :(得分:1)
我建议使用JSON库,如Json.net。
如果你可以允许阅读整个文件,那么使用linq就可以轻松了。
class TrackElement {
public Track Track {get;set;}
}
class Track {
public string track_id{get;set;}
public string track_name{get;set;}
public string track_category{get;set;}
}
读取文件,反序列化并搜索:
var data = File.ReadAlltext("path/to/your/file.txt");
List<TrackElement> database = JsonConvert.DeserializeObject<List<TrackElement>>(data);
var results = database.Where(i=>i.Track.track_category.ToLower().Contains("rock")).Select(t=>t.Track.track_id);
如果数据库非常大,则不应将整个内容读入内存,在这种情况下,您可以使用流式解析(token-by-token),直接读取文件。为此,您可以使用Json.net lib中的JsonReader类。 (http://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_JsonReader.htm)