>  기사  >  백엔드 개발  >  为什么在知乎上搜索“map[]”一定会导致“服务器提了一个问题”?

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

WBOY
WBOY원래의
2016-06-06 16:22:311106검색

事实上不仅仅是“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\(\)】就不会导致错误。 工程师的小彩蛋 看哪些人闲着没事干 还要不要过国庆了?! @李奇
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.