[{"data":1,"prerenderedAt":503},["ShallowReactive",2],{"project-25414389":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":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":46,"post_text":48,"what":49,"said":94,"maker_in_thread":261,"shape":271,"grid":275,"attempts":465,"same_week":466,"maker_shows":273,"maker_hidden":495,"reader_version":496,"card":497},"25414389","Typesense Books Search","Instantly search 28M books from OpenLibrary","title","Show HN: Instantly search 28M books from OpenLibrary","https:\u002F\u002Fbooks-search.typesense.org\u002F","books-search.typesense.org","jabo",1607930529,2020,424,80,76,3028,3,"legend","data","book search","web_app",[21,24,25,26,27],"open library","instant search","typesense","book metadata","mixed",-0.256,{"positive":31,"neutral":32,"mixed":33,"critical":34},9,15,2,16,42,{"performance":37,"execution":39,"docs":41,"design":42,"idea":43,"pricing":45},{"positive":38,"critical":33},1,{"positive":38,"critical":40},10,{"positive":33,"critical":38},{"positive":38,"critical":38},{"positive":44,"critical":33},0,{"positive":44,"critical":44},[47,18,44,47,38,47,44,38,38,18,18,38,47,38,47,47,47,38,38,38,38,18,38,44,18,38,18,44,38,38,18,18,38,18,18,44,44,18,38,18],5,null,{"problem":50,"audience":48,"pricing":48,"motivation":59,"time_to_build":64,"stack":68,"openness":91,"stage":92,"team_size":93},{"value":51,"source":52,"evidence":53},"Finding books quickly across the Open Library catalogue","inferred",[54,56],{"id":55},"post",{"id":57,"by":11,"text":58},"25414391","Quick context: I built this from the Open Library (Internet Archive) books dataset (https:\u002F\u002Fopenlibrary.org\u002F), as a follow up to this comment on the GoodReads post earlier today:…",{"value":60,"source":61,"evidence":62},"Weekend project to showcase Typesense on Open Library data","maker",[63],{"id":57,"by":11,"text":58},{"value":65,"source":61,"evidence":66},"About 12 hours",[67],{"id":57,"by":11,"text":58},[69,73,77,81,87],{"value":70,"source":61,"evidence":71},"Typesense",[72],{"id":57,"by":11,"text":58},{"value":74,"source":61,"evidence":75},"Typesense InstantSearch.js adapter",[76],{"id":57,"by":11,"text":58},{"value":78,"source":61,"evidence":79},"ParcelJS",[80],{"id":57,"by":11,"text":58},{"value":82,"source":61,"evidence":83},"Ruby indexing scripts",[84],{"id":85,"by":11,"text":86},"25418661","I’m currently ranking by text match score and publish date and some of the records had publish dates that were hard to parse by Date.parse(), so I just set those to 1970:…",{"value":88,"source":61,"evidence":89},"S3 and CloudFront",[90],{"id":57,"by":11,"text":58},"open_source","launched","unknown",{"praise":95,"objections":119,"requests":168,"questions":205,"alternatives":224},[96,108],{"value":97,"source":98,"evidence":99},"Fast search performance","commenter",[100,104],{"id":101,"by":102,"text":103},"25414789","tmikaeld","The typesense performance is really impressive, seems at par with the (also) impressive meilisearch. I'm going to try the free tier of typesense right now, perfect for my current…",{"id":105,"by":106,"text":107},"25422797","mpalmer","Can't fault the performance! Nice work. My one UX suggestion would be to present search results in a more table-like layout, as reading both across and down to see every result…",{"value":109,"source":98,"evidence":110},"Impressive build time for the scope",[111,115],{"id":112,"by":113,"text":114},"25419471","allenleein","Pretty good for a 12 hours hacking!",{"id":116,"by":117,"text":118},"25427992","_tom_","You might want to clarify that this does not search 28M books, it searches metadata for 28M books. Very different. I notice many titles did not have authors. I spot checked this…",[120,131,146,150,157],{"value":121,"source":98,"evidence":122},"Duplicate editions appear in results",[123,127],{"id":124,"by":125,"text":126},"25421062","tommoor","Seems like this exposes the flaw in the dataset. Eg, searching for \"cixin liu\" there are many different variations of the same book that show up, lots and lots of duplication.",{"id":128,"by":129,"text":130},"25418116","jillesvangurp","I did a few quick tests. There are some issues with ranking and duplicates that I see. I typed \"Neal Stephenson\" and got lots of duplicates for his latest novels. Cleaning up the…",{"value":132,"source":98,"evidence":133},"Stop-word filtering breaks titles and phrases",[134,138,142],{"id":135,"by":136,"text":137},"25418344","impalallama","Straight up impossible for me to search for Isaac Asimov's \"I, Robot\". Some kinda of input cleaning strips out the I from \"I robot\", and just searches \"Robot\". \"iRobot\" does not…",{"id":139,"by":140,"text":141},"25414904","wolfgarbe","Great project. It seems though, that Books search does not support phrase search and stop words are ignored: \"king of england\" becomes king england. Is this by design? Does this…",{"id":143,"by":144,"text":145},"25416355","jtbayly","Sadly it isn’t finding the first two books I looked for that are in the dataset. https:\u002F\u002Fopenlibrary.org\u002Fworks\u002FOL7116092W\u002FThe_church_of_Christ And…",{"value":147,"source":98,"evidence":148},"Ranking favours subject books over the works themselves",[149],{"id":128,"by":129,"text":130},{"value":151,"source":98,"evidence":152},"Results include books not available to borrow",[153],{"id":154,"by":155,"text":156},"25415802","rayrag","I've searched for 'Lovecraft' and then opened first 15 results - no book was in library. Then I went to the openlibrary.org and again searched for 'Lovecraft' and among first 20…",{"value":158,"source":98,"evidence":159},"Slow search while typing before debounce was added",[160,164],{"id":161,"by":162,"text":163},"25414836","thejosh","There needs to be debounce. Currently seeing 2-10s+ for simple typing, and it jitters around from what I typed. Searching from Perth, Australia.",{"id":165,"by":166,"text":167},"25414868","dutchbrit","Same here (EU, The Netherlands). I thought it was broken at first. Took longer than 10 seconds (I think about 20\u002F30s) before I started seeing results. Unusable.",[169,180,187,191,198],{"value":170,"source":98,"evidence":171},"Exact phrase search with quotes",[172,176],{"id":173,"by":174,"text":175},"25417366","yboris","I would love, if possible, to do an exact multi-word search, e.g. \"Bill Gates\". Currently if the phrase is not found, you get results for one of the words. Putting the search in…",{"id":177,"by":178,"text":179},"25419295","ibraheemdev","OP: > I built this in about 12 hours as a weekend project, so there might be some lurking issues. > Yup, exact matching using quotes is on the horizon. Should be available in a…",{"value":181,"source":98,"evidence":182},"AND-based multi-word search",[183],{"id":184,"by":185,"text":186},"25422073","smusamashah","It's super uncomfortable when any site uses OR based search. Is there a way to perform AND based search so that when I write more words, the results reduce instead of increasing…",{"value":188,"source":98,"evidence":189},"Table-style result layout",[190],{"id":105,"by":106,"text":107},{"value":192,"source":98,"evidence":193},"Filter for books available in the library",[194],{"id":195,"by":196,"text":197},"25414828","markdown","A big problem with the OpenLibrary website is that there is no way to filter search results for books that are actually in the library, which I find quite odd TBH. This \"Instant…",{"value":199,"source":98,"evidence":200},"Fix browser history on each keystroke",[201],{"id":202,"by":203,"text":204},"25415446","BenElgar","Cool! Small bit of feedback: typing each character adds an entry to the browser's history which seems a bit excessive. Might consider using replaceState over pushState.",[206,210,217],{"value":207,"source":98,"evidence":208},"How large is the dataset and what nodes are needed",[209],{"id":101,"by":102,"text":103},{"value":211,"source":98,"evidence":212},"Can Typesense sync with PostgreSQL automatically",[213],{"id":214,"by":215,"text":216},"25417487","interactivecode","@jabo is it possible to connect typesense (or any other instance search provider) to a postgresql instance and have it “just work”?",{"value":218,"source":98,"evidence":219},"Why use a custom search instead of an off-the-shelf query syntax",[220],{"id":221,"by":222,"text":223},"25418596","jessriedel","It also strips quotation marks, so can't search phrases at all. I'm always sort of surprised by this stuff. Like, isn't 99% of the effort to get access to the database, how to…",[225,229,236,243,250],{"value":226,"source":98,"evidence":227},"Meilisearch",[228],{"id":101,"by":102,"text":103},{"value":230,"source":98,"evidence":231},"Elasticsearch and Solr",[232],{"id":233,"by":234,"text":235},"25417716","binarymax","I'm curious, what do you feel meilisearch offers that is better than elasticsearch or solr?",{"value":237,"source":98,"evidence":238},"Open Library's own search",[239],{"id":240,"by":241,"text":242},"25420142","mekarpeles","Jabo, I love to see this, more access for the book community -- especially how quickly it came together. Nice work Jabo and excited to see Typesense in action. Open Library…",{"value":244,"source":98,"evidence":245},"Google Books",[246],{"id":247,"by":248,"text":249},"25415076","bergstromm466","> I thought it was going to search inside the 28M books Google Books does this, not sure how many books though.",{"value":251,"source":98,"evidence":252},"pg_search and ZomboDB for Postgres",[253,257],{"id":254,"by":255,"text":256},"25417692","adenta","Is such a thing possible? Yes. Has anybody built it? No :(. That would totally be the dream though. No reindexing. Pg_search is def fast enough for a large swath of use cases.…",{"id":258,"by":259,"text":260},"25418067","necovek","Never tried it out (it's on my never-getting-done list), but someone has built it: https:\u002F\u002Fgithub.com\u002Fzombodb\u002Fzombodb",{"comments":262,"answered":31,"key":263},23,[264,265,268],{"id":57,"text":58},{"id":266,"text":267},"25414820","Thank you! The OpenLibrary dataset has ~28M records, takes up 6.8GB on disk and 14.3GB in RAM when indexed in Typesense. Each node has 4vCPUs. Took me ~3 hours to index these 28M…",{"id":269,"text":270},"25418677","Thank you! The indexed size is 14.3GB.",{"commenters":272,"max_depth":273,"maker_replies":262,"first_comment_mins":44,"lifespan_hours":274},43,6,24,[276,278,280,282,284,285,287,291,294,296,297,298,300,302,304,305,308,309,311,313,315,318,319,322,326,329,332,334,336,338,341,344,348,350,353,355,358,360,362,365,370,371,373,375,377,379,380,384,386,391,394,396,400,403,405,408,410,412,414,417,419,420,422,425,427,429,432,434,436,437,440,442,444,446,447,449,452,454,458,460],[57,44,44,277,11,38],"project\u002Fneutral\u002Fexecution",[101,44,47,279,102,44],"project\u002Fpositive\u002Fperformance",[266,44,44,281,11,38],"project\u002Fneutral\u002Fperformance",[283,44,18,281,102,44],"25416294",[269,44,44,281,11,38],[233,44,44,286,234,44],"other\u002Fneutral\u002Fnone",[288,44,47,289,290,44],"25415953","maker\u002Fpositive\u002Fnone","forgot-pw",[292,44,44,293,11,38],"25418686","commenter\u002Fneutral\u002Fnone",[128,44,38,295,129,44],"project\u002Fcritical\u002Fexecution",[85,44,44,277,11,38],[112,44,47,289,113,44],[240,44,47,299,241,44],"project\u002Fpositive\u002Fdocs",[301,44,44,289,11,38],"25421331",[303,44,44,286,11,38],"25421348",[135,38,38,295,136,44],[306,38,18,277,307,44],"25418543","crawdog",[221,38,38,295,222,44],[177,38,18,310,178,44],"maker\u002Fneutral\u002Fexecution",[312,38,18,277,222,44],"25422365",[314,38,44,277,11,38],"25418620",[316,38,18,277,317,44],"25418674","rpedela",[202,33,18,277,203,44],[320,33,44,321,11,38],"25419493","maker\u002Fneutral\u002Fnone",[323,18,38,324,325,44],"25414805","project\u002Fcritical\u002Fdesign","cstuder",[327,18,44,328,11,38],"25415058","maker\u002Fneutral\u002Fdesign",[330,18,47,331,325,44],"25415072","project\u002Fpositive\u002Fdesign",[195,333,38,295,196,44],4,[335,333,44,321,11,38],"25414847",[337,333,47,289,196,44],"25414873",[339,333,18,340,241,44],"25422469","project\u002Fneutral\u002Fdocs",[342,333,47,343,196,44],"25426722","maker\u002Fpositive\u002Fdocs",[345,47,47,346,347,44],"25415275","maker\u002Fpositive\u002Fexecution","mod",[349,47,44,321,11,38],"25415298",[351,47,47,289,352,44],"25415739","padolsey",[154,273,38,354,155,44],"project\u002Fcritical\u002Fidea",[356,273,44,293,357,44],"25420278","stagger87",[359,273,38,354,155,44],"25420671",[361,273,44,286,357,44],"25421301",[363,273,44,364,241,44],"25422373","other\u002Fneutral\u002Fidea",[366,367,38,368,369,44],"25414752",7,"project\u002Fcritical\u002Fdocs","tompazourek",[247,367,44,286,248,44],[143,372,38,295,144,44],8,[374,372,44,277,11,38],"25416484",[116,31,18,376,117,44],"project\u002Fmixed\u002Fexecution",[161,40,38,378,162,44],"project\u002Fcritical\u002Fperformance",[165,40,38,378,166,44],[381,40,44,382,383,44],"25420114","commenter\u002Fneutral\u002Fperformance","photonios",[385,40,44,281,11,38],"25414909",[387,388,18,389,390,44],"25415731",11,"project\u002Fneutral\u002Fpricing","maz1b",[392,388,44,393,259,44],"25418143","commenter\u002Fneutral\u002Fpricing",[395,388,44,389,11,38],"25418783",[397,398,38,295,399,44],"25422395",12,"slowhand09",[401,398,18,277,402,44],"25423034","JohnKacz",[173,404,18,277,174,44],13,[406,404,44,407,255,44],"25417708","commenter\u002Fneutral\u002Fexecution",[409,404,44,277,11,38],"25418725",[139,411,38,295,140,44],14,[413,411,44,277,11,38],"25414944",[415,32,38,295,416,44],"25420460","porpoise",[418,32,44,321,11,38],"25420485",[184,34,18,277,185,44],[421,34,44,277,11,38],"25423365",[105,423,18,424,106,44],17,"project\u002Fmixed\u002Fdesign",[426,423,44,328,11,38],"25423077",[124,428,38,295,125,44],18,[430,428,44,293,431,44],"25421135","cldellow",[433,428,44,277,11,38],"25421274",[214,435,18,277,215,44],19,[254,435,18,277,255,44],[438,435,44,286,439,44],"25417997","karterk",[441,435,44,293,255,44],"25418238",[443,435,44,293,439,44],"25418339",[445,435,44,286,255,44],"25419149",[258,435,44,286,259,44],[448,435,44,286,439,44],"25417856",[450,435,18,277,451,44],"25420153","Viruptc",[453,435,44,286,11,38],"25423553",[455,456,38,295,457,44],"25417018",20,"known",[459,456,44,277,11,38],"25419519",[461,462,18,463,464,44],"25417334",21,"project\u002Fneutral\u002Fnone","germanka",[],[467,472,477,482,487,491],{"id":468,"name":469,"points":470,"category":471},"25372464","SongBox",647,"web_saas",{"id":473,"name":474,"points":475,"category":476},"25434753","33Mail",442,"productivity",{"id":478,"name":479,"points":480,"category":481},"25405259","A Book Like Foo",344,"learning_science",{"id":483,"name":484,"points":485,"category":486},"25429685","Polotno Studio",180,"dev_tools",{"id":488,"name":489,"points":490,"category":486},"25394567","Devbook",168,{"id":492,"name":493,"points":490,"category":494},"25417022","Keytap2","security_privacy",false,"v2",{"id":498,"name":5,"line":6,"ai":495,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":499,"top":18,"kw":500,"maker":11,"domain":10,"tier":19,"attempts":44,"strip":501,"url":9,"mix":502,"praise":97,"objection":121,"sub":21},25414389,-0.26,[21,24,25,26,27],"5305150113315155511113103130113313300313",[31,32,33,34],1794036599558]