Home  >  Article  >  Backend Development  >  为什么在知乎上搜索“map[]”一定会导致“服务器提了一个问题”?

为什么在知乎上搜索“map[]”一定会导致“服务器提了一个问题”?

WBOY
WBOYOriginal
2016-06-06 16:22:311103browse

事实上不仅仅是“map[]”,大多数带有“[]”后缀的查询都会导致“服务器提了一个问题”,比如“abc[]”。但有意思的是“a[]”和“[]”本身不会。同样的问题还可以在包含“{}”的查询上看到。我想了几分钟,没想到一个合理的解释,方便的话,请知乎员工来满足一下我的好奇心,XD

顺便,这个 bug 我已经报告有一阵了,还没修好么?

回复内容:

直接看最后一句
<code class="language-text">"error": { "msg": "org.apache.solr.search.SyntaxError: Cannot parse 'map[]': Encountered \" \"]\" \"] \"\" at line 1, column 4.\nWas expecting one of:\n <range_quoted> ...\n <range_goop> ...\n ", "code": 400 }
</range_goop></range_quoted></code>
知乎搜索工程师一直在刷这个帖子等正确答案好回去修 bug 。 突然想到天津政府网 咳咳, 直接上图:
为什么在知乎上搜索“map[]”一定会导致“服务器提了一个问题”?咳咳, 为嘛, 我这可以搜索了的了?我这搜索的是回答, 同理回答, 成员, 话题均能正常搜索.
  • 根据推断, 知乎至少有两台服务器提供搜索功能, 对问题和(回答, 成员, 话题)进行分开搜索, 并且这两类的查询分词器是不同的啊, 根据猜测知乎应该有8种分词器(一不小心似乎发现了个攻击手段, 提了乌云), 。
  • 被顶的最高的回答说知乎使用solr查询器, 用double colon即可避免, 但是.....
zhihu.com/search?, 服务器还会提问题好不好, 说明知乎肯定是自己写的分词器, bug太多. 还有说反转义的,唔,你搜索f?能正常搜索, 你加个f\?搜一下了, 又挂了好不好, 这到底发什么神马? 还不是自己写的分词器有问题.
总结:
  • 不同类型的搜索分词器到底哪里不同?
  • 在搜索问题的时候, 知乎你是不是还做了什么操作(autocomplete为嘛被我弄挂了, 别打我)?
猜测:
  • 知乎正在测试新的搜索功能, 在等大家给他找bug.
-
知乎的新版搜索已经解决这个问题了。
为什么在知乎上搜索“map[]”一定会导致“服务器提了一个问题”?
- 大家别顶了,让辛勤的工程师好好过个周末吧。 估计是类似SQL注入神马的bug吧
俺不懂SQL,不要追问俺 1.各位不要猜了,这里给出正确答案:【转义问题】。

2.知乎的工程师,只对部分关键字做了处理,还有些忘了处理。

以下这些字符知乎的工程师忘了处理,直接输入会导致错误:
! ( ) [ ] { }
比如输入:【aa()】会导致错误。

所以,只要在上述符号之前,自己把它注释掉,就没问题了。
比如输入:【aa\(\)】就不会导致错误。 工程师的小彩蛋 看哪些人闲着没事干 还要不要过国庆了?! @李奇
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn