16 ms·
Search at Slack
- joe_fro 10y agoThis is a very informative article. If you're interested in getting started with search relevancy I would also suggest the book: https://www.manning.com/books/relevant-search https://www.manning.com/books/relevant-search Which was very helpful to me.
- isabellat 10y agoThank you for the book suggestion. Happy you found the article informative!
- garysieling 10y agoI second this recommendation, I used Relevant Search to build https://www.findlectures.com https://www.findlectures.com
- donretag 10y agoI enjoy reading Doug Turnbull's blog and most of his writing, but I found this book tedious. I purchased it despite reading that terrible first chapter which is available as a free sample. Perhaps it could be that I am already too well-versed in the subject. Any book where you learn at least one thing new is always worth it, so I do not regret having this book in my library.
- softwaredoug 10y agoThanks for the kind words and the useful critique. I found it tricky to strike a balance between new budding search devs and people more advanced. I may write a more advanced book at some point.
- donretag 10y agoAnd thank you for considering my reply as "kind words". :) I would not have been so harsh if I knew you were going to read the reply! That first chapter though. So many points repeated. For those that want to read more: http://opensourceconnections.com/about-us/doug-turnbull/ http://opensourceconnections.com/about-us/doug-turnbull/ or really anything at http://opensourceconnections.com/blog/ http://opensourceconnections.com/blog/
- softwaredoug 10y agoHaha. That chapter was revised a lot and ultimately shortened a ton in the final version. I agree it had a lot of repetition. Hopefully it's better in the final printing.
- donretag 10y agoI read the advance version of the first chapter and never the one in the actual book when it finally was released. Will see if I have that original version and do a comparison. I tried to see your talk at last year's Elaticon, but it was packed due to the small room. Not surprising since Elasticsearch tends to minimalize search in favor of analytics/logging. So few talks regarding pure search.
- softwaredoug 10y agoThanks! (This is Doug Turnbull :-p).
- isabellat 10y agoHi, I'm one of the authors on the post, happy to answer any questions.
- iloveluce 10y agoAwesome article! The article mentions the signals that the model found were most significant for a message. Curious to know if they're listed by order of significance in the article? And if not was wondering whether one or two signals were predominantly more significant than the rest.
- isabellat 10y agoOur top signals are age of the message, whether the message contains a link and whether the message is from the channel that you are currently viewing. We have several different models in production right now but those signals are generally the strongest.
- g12mcgov 10y agoIs there any possibility in the future users will be able to search ALL messages from a channel/private message, ever? It seems like Slack search cuts off after a certain point, and doesn't index into archived messages.
- isabellat 10y agoThe free version includes search up to 10k of your team's most recent messages. The standard version includes unlimited searchable message archives. https://tinyspeck.slack.com/pricing/slack-for-teams https://tinyspeck.slack.com/pricing/slack-for-teams
- throwthisawayt 10y agoThis sounds like a really interesting problem to work on. Are you hiring anyone for this team (esp those new to search)?
- 10y ago
- danpalmer 10y agoToday I learned Slack has a "relevant" option for search terms. Maybe I should try it again - I had stopped using search entirely because of the results being fairly irrelevant.
- samcrawford 10y agoMy experience is similar. Slack is great, but the whole search experience remains terrible for me. Results are largely irrelevant, jumping back and forth into conversations takes a long time, the UI sidebar has very little space, and if I'm looking for a file it's hard to remember if it was sent as a URL or as a file in slack. Perhaps I'm spoilt by Gmail search, but this is the one area of slack that I think is sorely lacking.
- leothekim 10y agoThis sounds like a step towards making Slack more of a knowledge repository and possibly a wiki replacement. One of my (many) qualms with knowledge repository tools like Google Sites is that searching them is basically useless. Another is that knowledge in these repos becomes stale really quickly. If you can put meaningful information in a Slack post, you can take advantage of the recency-focused nature of chat and smarter searching algorithms like the one described here, and essentially make an internal Google for your organization. Kudos to the Slack team, very interested to see how this evolves.
- trafficlight 10y agoI've been searching for a solution to this as well. Our Slack holds an amazing amount of information, but it's really difficult to curate that information efficiently. It'd be cool to highlight a piece of information and insert it into a wiki-style site.
- andygcook 10y agoWe're working on this at Tettra.co. Building a wiki that works in tandem with Slack. Would love for you to check it out http://tettra.co http://tettra.co Feel free to email me with any uestions too - andy@tettra.co
- trafficlight 10y agoVery interesting. We'll definitely check it out.
- deleted 10y ago[deleted]
- ankit-singh 10y agoLooks like solr is being used to rank messages using a few features and then re-ranking the top n at application layer using another set of features. This would constrain the search quality as 1) you have no control as to how these two set of features interact and 2) messages ranked low based on first set of features could be highly relevant according to the second set. Another possible approach could have been using a custom scorer to influence scoring at lucene level, thereby combining all the features at a single point. Was this approach evaluated? If so, any insights as to what could be a limitation?
- isabellat 10y agoGreat question. We rank in two stages for a number of different reasons. First, it would be too expensive from a performance perspective to rank all of the messages in your corpus. Second, some of the features that we use to rank are much more easily accessed at the application layer. It would require more of an engineering effort to make these signals accessible in SOLR. The first pass which is done in SOLR is a high recall, low precision pass. The second pass through our custom ranker is a high precision pass. It is possible that we would lose some messages that might end up being important in the first pass but it's a tradeoff between performance and accuracy. Hope this helps answer your question.
- Eridrus 10y agoBesides the technical answer already given, this is a pretty standard architecture for search ranking and other problems where your fine grained decisions are too expensive to run on everything.
- kusmi 10y agoI've never used Slack because last I remember they don't allow local installation, therefore no access to any documents that were dropped in, is this still the case? I have been using mattermost instead, and wrote a bot which processes all documents uploaded into mattermost, extracts metadata, creates tags and summaries for each, archives the documents in an ECM -categorizing them by their tags, and opens them up for full text solr search. My understanding is that a custom solution like this wouldn't be possible with Slack, or would otherwise require more hacky solutions?
- paulcole 10y ago> they don't allow local installation This is like saying Ford sells cars they don't allow you to fly. If you want something that flies, buy a plane.
- amelius 10y agoOpen-source desperately needs more search-tool projects. Lucene/Solr/Elasticsearch are nice, but they need competition, especially outside the Java world.
- scaryclam 10y agoI'm not really sure what you're trying to say in your comment. Sure, there's a lot of Java going on there, but does that really matter? They're tools and you can interact with them from the language of your choice. I get the competition part, but none of the above are exactly stagnant, so I'm wondering what you'd like to see more competition achieve. Not trying to be difficult, just curious in case I missed something from your comment :)
- amelius 10y ago> so I'm wondering what you'd like to see more competition achieve There's a lot that competition can help improve, for example in the areas of performance, robustness, and also in functionality, e.g. better NLP for better understanding of queries and translating them into results, image/audio search, etc. And competition can also come up with surprising new features that we can't even think of right now. This, plus it is (imho) quite weird that we have only one source of code for one of the basic branches of Computer Science.
- slantedview 10y agoIMO this is like saying Hadoop or Spark or Kafka needs more competition outside the Java (JVM) world. Elasticsearch, at least, has a dead simple web API which makes it accessible from any platform, along with a slew of clients and integrations with other tools/platforms.
- endymi0n 10y agoThis. ElasticSearch is one of only two pieces of Java (the other one being Flyway) that's so good we use it anyway. Not too bad anymore with Docker, it's a REST API after all. In the end, ES really proved to be the least bad search server there's out there. The real crux isn't search, it's language. And as Lucene is made by technical linguists (a really rather special bunch) and Java is still universities' darling, it's unlikely their effort can be redone in a non-JVM language anytime soon.
- jtoberon 10y agoQuestion for the author: how do you actually deploy your model? Do you have a dependency on Spark in your production system?
- lacksconfidence 10y agoBeing that this is a SVM, which is typically evaluated as a simple linear sum of weights, I imagine they reimplemented that in the application layer. Would be curious how they handled the normalization steps (reimplement that as well?)
- jliszka 10y agoYep. We normalize our features as part of training, and the stdevs of each feature are part of the resulting model, along with the weights. (The means are always 0 because of the way we construct our training set.) The weights we use in production are actually normalized_weight / stdev.
- isabellat 10y agoSince its just a dot product between the learned weights and the feature vector, we do this in the application layer as lacksconfidence surmised.
- subpixel 10y agoSlack is great, but it's adoption by popular opensource communities is problematic. Why? Because opensource communities are on the free plan, which limits search once you have 10k messages. I've had experiences where I wanted to revisit a question I had asked in a Slack channel the previous week, and been unable to find it. As a result, everyone burns out faster b/c the same questions get asked and answered over, and over. Couple this with the fact that channels are not indexed by Google and you get a black box where valuable Q&A content and discussion goes to die.
- fletchowns 10y agoI have experienced this as well with the Chef Community Slack channel. It is a wonderful resource and it's super convenient to have easy access from my phone, etc but there is so much useful information in there that won't be accessible by others in the future.
- austenallred 10y agoThat's an easy problem to fix http://slackarchive.io/ http://slackarchive.io/
- ngokevin 10y agoYup. We have a 2800-person community Slack for an open source project. Slack Archive set us up for free, and it works well. But we still direct people to Stack Overflow since the Q&A is more discoverable there.
- accountface 10y agoWhy are people using a chat app like a wiki to begin with
- 542458 10y agoBecause codifying, organizing, and keeping up-to-date general knowledge on a wiki is hard work, whereas banging out a quick answer to a specific question on slack is comparatively easy. Which maybe should be a challenge to anybody looking to build the next generation of knowledge repositories.
- softwaredoug 10y agoNeat. We've been building a Learning to Rank plugin for Elasticsearch. Feedback and contributions very welcome https://github.com/o19s/elasticsearch-learning-to-rank https://github.com/o19s/elasticsearch-learning-to-rank
- lacksconfidence 10y agoI've also been building a learning to rank plugin for elasticsearch, we might want to sync up. I hadn't set it up to sync to github as it was just internal development, but i've started the sync and it will show up at https://github.com/wikimedia/search-ltr https://github.com/wikimedia/search-ltr soon. It's got a bit more of the integration with elasticsearch put together, including storing models in cluster state and a rest interface for managing them. It's a bit more of a direct port of the solr plugin rather than a rewrite from the ground up so there are also some oddities that don't yet make sense. Refactors will certainly be done. It's also tied a little less directly to RankLib, such that i can convert and load in MART models trained by lightgbm or xgboost which have done pretty well in my offline tests and are able to utilize resources on my training machine much more efficiently than ranklib's LambdaMART (although in terms of results, the ranklib implementation is pretty good).
- softwaredoug 10y agoNeat! Want to email me at dturnbull AT o19s.com We store models as a custom scripting language which takes care of distributing the model around the cluster, caching and basic CRUD operations. This was the hard thing to figure out, at first we looked at a REST plugin but it seemed cumbersome and hard to integrate with the query DSL. But I'm curious how you guys got around those pain points:)
- notforgot 10y agoHey, Slackers, you can't find what isn't there. Most of the time I search for information I need is because I don't know anything about that part of the software. I never found this kind of information in Slack. Parse the company docs, or our rep, and now we're talking.
- dgreensp 10y agoThe subject of how bad Slack's search is comes up all the time in talking to friends and co-workers, and I wonder if the described ranking changes are enough. Usually when I'm searching, I'm looking for a particular message, possibly even one I read earlier that day, and I may know a few things about it, like who sent it and that it had an important link, but I still can't necessarily find it! The results are also presented in a giant cartoony way that makes me page through many pages. Tokenizing my search into "keywords" means that even if I know a substring of what I'm looking for, it doesn't come up as relevant, or the tokenizer tokenized the text differently. This is also why GitHub search can't find a lot of things. What I would want in a search experience is the equivalent of Control-F over the list of messages I've actually seen.
- jliszka 10y agoStay tuned! We're working on improving phrase matching as we speak. As for the Control-F thing... stay tuned on that too :)
- rajhans 10y agoGreat work! A few questions for the author(s): In the article, you have listed 9 feature extractors/templates. In the final model, what's the total number (or rough magnitude) of features? How much data (or ballpark estimate) did you train this on? Did you try to deal with potential difference in distribution across your data sampling sources?
- bearcobra 10y agoI'd love it if they made it easier to search just the channel or conversation you have in focus. Having the filter autocomplete based on what channel your on seems like a good middle ground.
- isabellat 10y agoIf you use the shortcut 'Command-F' it will search the current channel or conversation by auto-populating the search bar with 'in:channel_name'. Hope that's what you are looking for! Here's a list of all shortcuts: https://get.slack.help/hc/en-us/articles/201374536-Slack-keyboard-shortcuts https://get.slack.help/hc/en-us/articles/201374536-Slack-key....
- bearcobra 10y agoThank you! This is what I get for navigating with my mouse.
- dilap 10y agoI thought this was going to be an announcement about how they finally fixed search... A suggestion: When I search, what I want 99% of the time to happen is that the current window I'm looking at quickly gets filtered to my search query. Ranking doesn't matter, just show exact matches ranked by time. 1% of the time, I want something else.
- jliszka 10y agoStay tuned :)