[{"data":1,"prerenderedAt":220},["ShallowReactive",2],{"project-17548623":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":34,"aspects":35,"strip":41,"post_text":43,"what":44,"said":72,"maker_in_thread":136,"shape":144,"grid":147,"attempts":183,"same_week":184,"maker_shows":33,"maker_hidden":212,"reader_version":213,"card":214},"17548623","PageFish","PageFish search algorithm","title","Show HN: PageFish search algorithm","https:\u002F\u002Fgithub.com\u002Fpeterburk\u002Fpagefish","github.com","peterburkimsher",1531823146,2018,45,16,830,2155,39,"shown","data","search index","library",[24,25,26,27,28],"search algorithm","static search","filesystem search","binning","full text search","roasted",-0.353,{"positive":32,"neutral":33,"mixed":32,"critical":33},0,4,8,{"idea":36,"performance":38,"execution":40},{"positive":32,"critical":37},2,{"positive":32,"critical":39},1,{"positive":32,"critical":39},[42,32,42,39,32,42,32,39,39,32,42,32,32,39,32,32],3,null,{"problem":45,"audience":43,"pricing":43,"motivation":56,"time_to_build":43,"stack":61,"openness":69,"stage":70,"team_size":71},{"value":46,"source":47,"evidence":48},"Searching a large dataset of names without a server by using the filesystem as an index.","inferred",[49,52],{"id":50,"by":11,"text":51},"17550011","Some queries (e.g. San Francisco) work on localhost but not Github, apparently because of case-insensitive URLs. That's probably what's up with Egypt and B-W. A better…",{"id":53,"by":54,"text":55},"17549971","LordHeini","Using some database backed full text search will beat this by a huge margin. Especially when it comes to actually working correctly. As the author states where are some caveats…",{"value":57,"source":58,"evidence":59},"Proof of concept for using the filesystem as a search index when server-side isn't available.","maker",[60],{"id":50,"by":11,"text":51},[62],{"value":63,"source":47,"evidence":64},"JavaScript",[65],{"id":66,"by":67,"text":68},"17550050","sonofgod","Whilst there's a few hashing algorithms explicitly designed to be memory and time-intensive to make password retrieval impractical, most are really fast, even in Javascript.…","open_source","prototype","unknown",{"praise":73,"objections":81,"requests":99,"questions":115,"alternatives":121},[74],{"value":75,"source":76,"evidence":77},"Interesting idea of using unicode characters as a high-density encoding","commenter",[78],{"id":79,"by":67,"text":80},"17549468","Instead of addition, why not use an actual hashing algorithm, truncated to a certain number of bits? That'll give you better binning and give you flexibility about filesize \u002F…",[82,87,95],{"value":83,"source":76,"evidence":84},"Produces false negatives due to case-insensitive URLs and invalid hashes",[85,86],{"id":53,"by":54,"text":55},{"id":50,"by":11,"text":51},{"value":88,"source":76,"evidence":89},"Too limited compared to database full text search such as SQLite FTS",[90,94],{"id":91,"by":92,"text":93},"17549807","gregoriol","Obviously it is faster than grep... which is \"linear search\"! Compare it instead to some \"hashing search\" to see how good or fast it really is. For example, take SQLite's Full…",{"id":53,"by":54,"text":55},{"value":96,"source":76,"evidence":97},"Linear grep comparison is not a meaningful benchmark",[98],{"id":91,"by":92,"text":93},[100,108],{"value":101,"source":76,"evidence":102},"Use a better hashing or binning algorithm",[103,104],{"id":79,"by":67,"text":80},{"id":105,"by":106,"text":107},"17551967","netgusto","I proposed to use a simple polynomial hash https:\u002F\u002Fgithub.com\u002Fpeterburk\u002Fpagefish\u002Fissues\u002F1",{"value":109,"source":76,"evidence":110},"Sort the data for binary search",[111],{"id":112,"by":113,"text":114},"17549704","nine_k","Making a longer hash than 2 bytes would help selectivity, and filesystems are usually very good at finding files by name. Also, apparently the files are not sorted by name (or I…",[116],{"value":117,"source":76,"evidence":118},"Whether unicode characters outperform ASCII of the same byte size",[119,120],{"id":79,"by":67,"text":80},{"id":66,"by":67,"text":68},[122,126,130],{"value":123,"source":76,"evidence":124},"SQLite Full Text Search",[125],{"id":91,"by":92,"text":93},{"value":127,"source":76,"evidence":128},"PostgreSQL",[129],{"id":53,"by":54,"text":55},{"value":131,"source":58,"evidence":132},"ElasticSearch, Lucene, Sphinx",[133],{"id":134,"by":11,"text":135},"17549610","Binning! That's the word, not \"hash distribution\" like I wrote. Yes, I'd like to experiment more with different hashing algorithms. It needs to run fast on the query side.…",{"comments":137,"answered":42,"key":138},6,[139,140,143],{"id":134,"text":135},{"id":141,"text":142},"17549814","The data is in the order it came in from OSMNames. http:\u002F\u002Fosmnames.org\u002Fdownload\u002F When there's two elements with the same name (e.g. Geneva), the first result is the most common…",{"id":50,"text":51},{"commenters":145,"max_depth":42,"maker_replies":137,"first_comment_mins":146,"lifespan_hours":34},9,130,[148,150,152,154,156,158,159,162,164,166,168,171,173,175,178,180],[79,32,42,149,67,32],"project\u002Fneutral\u002Fidea",[134,32,32,151,11,39],"maker\u002Fneutral\u002Fexecution",[66,32,42,153,67,32],"project\u002Fneutral\u002Fperformance",[112,32,39,155,113,32],"project\u002Fcritical\u002Fperformance",[141,32,32,157,11,39],"project\u002Fneutral\u002Fnone",[105,32,42,149,106,32],[160,39,32,161,113,32],"17549656","other\u002Fneutral\u002Fnone",[91,37,39,163,92,32],"project\u002Fcritical\u002Fidea",[53,37,39,165,54,32],"project\u002Fcritical\u002Fexecution",[50,37,32,167,11,39],"project\u002Fneutral\u002Fexecution",[169,42,42,149,170,32],"17549894","rjmunro",[172,42,32,149,11,39],"17550035",[174,42,32,149,11,39],"17550422",[176,33,39,163,177,32],"17549217","dangoljames",[179,33,32,149,11,39],"17549388",[181,33,32,161,182,32],"17551647","ohum",[],[185,190,194,199,203,208],{"id":186,"name":187,"points":188,"category":189},"17530086","Router7",461,"infrastructure",{"id":191,"name":192,"points":193,"category":189},"17540263","Hasura",382,{"id":195,"name":196,"points":197,"category":198},"17538770","Font Playground",131,"creative",{"id":200,"name":201,"points":202,"category":189},"17551796","CloudForecast.io",125,{"id":204,"name":205,"points":206,"category":207},"17559213","Ansible Kernel",123,"dev_tools",{"id":209,"name":210,"points":211,"category":207},"17557384","Bo",104,false,"v2",{"id":215,"name":5,"line":6,"ai":212,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":216,"top":18,"kw":217,"maker":11,"domain":10,"tier":19,"attempts":32,"strip":218,"url":9,"mix":219,"praise":75,"objection":83,"sub":21},17548623,-0.35,[24,25,26,27,28],"3031030110300100",[32,33,32,33],1793990976818]