事实上不仅仅是“map[]”,大多数带有“[]”后缀的查询都会导致“服务器提了一个问题”,比如“abc[]”。但有意思的是“a[]”和“[]”本身不会。同样的问题还可以在包含“{}”的查询上看到。我想了几分钟,没想到一个合理的解释,方便的话,请知乎员工来满足一下我的好奇心,XD
"error": { "msg": "org.apache.solr.search.SyntaxError: Cannot parse 'map[]': Encountered \" \"]\" \"] \"\" at line 1, column 4.\nWas expecting one of:\n ...\n ...\n ", "code": 400 }
知乎搜索工程师一直在刷这个帖子等正确答案好回去修 bug 。
突然想到天津政府网
咳咳, 直接上图:
咳咳, 为嘛, 我这可以搜索了的了?我这搜索的是回答, 同理回答, 成员, 话题均能正常搜索.
- 根据推断, 知乎至少有两台服务器提供搜索功能, 对问题和(回答, 成员, 话题)进行分开搜索, 并且这两类的查询分词器是不同的啊, 根据猜测知乎应该有8种分词器(一不小心似乎发现了个攻击手段, 提了乌云), 。
- 被顶的最高的回答说知乎使用solr查询器, 用double colon即可避免, 但是.....
http://www.zhihu.com/search?q=%E2%80%9Daaaaaa%5B%5D%E2%80%9C&type=question, 服务器还会提问题好不好, 说明知乎肯定是自己写的分词器, bug太多. 还有说反转义的,唔,你搜索f?能正常搜索, 你加个f\?搜一下了, 又挂了好不好, 这到底发什么神马? 还不是自己写的分词器有问题.
总结:
- 不同类型的搜索分词器到底哪里不同?
- 在搜索问题的时候, 知乎你是不是还做了什么操作(autocomplete为嘛被我弄挂了, 别打我)?
猜测:
- 知乎正在测试新的搜索功能, 在等大家给他找bug.
-
知乎的新版搜索已经解决这个问题了。
-
大家别顶了,让辛勤的工程师好好过个周末吧。
估计是类似SQL注入神马的bug吧
俺不懂SQL,不要追问俺
1.各位不要猜了,这里给出正确答案:【转义问题】。
2.知乎的工程师,只对部分关键字做了处理,还有些忘了处理。
以下这些字符知乎的工程师忘了处理,直接输入会导致错误:
! ( ) [ ] { }
比如输入:【aa()】会导致错误。
所以,只要在上述符号之前,自己把它注释掉,就没问题了。
比如输入:【aa\(\)】就不会导致错误。
工程师的小彩蛋 看哪些人闲着没事干
还要不要过国庆了?! @李奇