2009-12-02 3 views
26

Google/GMail/etc. 매우 유용 할 수 있지만 부분 검색이나 접두사 검색 (예 : stuff *)을 제공하지 않습니다. 정확한 표현을 기억하지 못하기 때문에 종종 Gmail에서 메일을 찾지 못합니다.Google에서 부분 검색 기능을 제공하지 않는 이유는 무엇입니까? 색인이 너무 커야하기 때문입니까?

나는 그런 형태의 줄무늬가 있음을 알고 있지만, 특히 영어가 아닌 다른 언어에 관해서 이야기 할 때, 똑같지는 않습니다.

Google에서 이러한 기능을 추가하지 않는 이유는 무엇입니까? 색인이 폭발 할 것이기 때문입니까? 그러나 데이터베이스는 부분 검색을 제공하므로 확실하게이 문제를 해결할 수있는 좋은 알고리즘이 있습니다.

무엇이 문제입니까?

답변

7

Google은 실제로 검색하는 텍스트를 저장하지 않습니다. 검색 용어, 페이지에 대한 링크 및 용어가있는 페이지의 위치를 ​​저장합니다. 이 데이터 구조는 전통적인 데이터베이스 개념으로 색인됩니다. 와일드 카드를 사용하면 색인 색인이 매우 느려지고 Developer Art에서 말하는 것처럼 유용하지는 않습니다.

+3

접두어 (물건 *)와 근접 검색을 할 수있는 검색 엔진을 찾았다! [Exalead 웹 검색] (http://www.exalead.com/search/). 이 옵션을 찾으려면 고급 검색을 클릭하십시오. –

+1

@HughBrackett 힌트를 보내 주셔서 감사합니다. 그러나 Exalead는 고급 검색에서도 옵션에서 접두사 검색을 제거하는 것이 두렵습니다. :-(그것은 어디에도 없습니다. – syntaxerror

-2

당신이 현명 차 * 무엇을 의미 도출 할 수 없기 때문에 :

자동차? 카펫? 당근?

Google의 알고리즘은 문서 본문을 비교하고 외부 인바운드 링크를 사용하여 문서의 내용을 결정합니다. 이러한 와일드 카드를 사용하면 이러한 모든 알고리즘이 쓸모 없게됩니다.

+19

그것은이 경우 모든 결과를 반환해야합니다. 사용자가 원하는 경우 사용자가 가져옵니다. –

+0

나는 그것이 기술적으로 행해질 수 있다고 생각하지만 대부분의 인간들에게는 아마도 말이되지 않을 것이다. Google에 요청을 제출하십시오. 누가 아는 지, 그들이 단순히 놓친 좋은 아이디어일까요? –

+2

Google에서 패턴 덩어리 아이디어가 누락 되었습니까? 나는 거의 그렇게 생각하지 않는다 ... –

3

Google Code Search 정규 표현식을 기반으로 검색 할 수 있으므로 수행 방법을 알고 있어야합니다. 물론 코드 검색이 색인해야하는 데이터의 양은 웹 검색에 비해 매우 적습니다. 웹 검색에서 regex 또는 와일드 카드 검색을 사용하면 인덱스 크기가 증가하고 성능이 비실용적 인 수준으로 떨어집니다.

0

Google에서 발견 할 수있는 비법은 찾고있는 콘텐츠에있을 가능성이 높지만 관련성이없는 콘텐츠에는 함께 표시되지 않는 검색어 (또는 인용 된 문구)의 조합을 입력하는 것입니다. 와일드 카드 표현식은 이와 반대입니다. 와일드 카드가 일치 할 것으로 예상되는 용어를 입력하십시오. Google이 자동으로 형태소 분석을 수행합니다. 컴퓨터가 스팀을 타고 돌아 왔을 때, 라이코스 (iirc)는 패턴 매칭을했지만, 몇 년 전에 그것을 없앴습니다. 나는 그들이 서버에 너무 많은 부하를 가하고 있다고 추정한다.

8

Google은 부분 단어를 검색합니다. Gmail은 그렇지 않습니다. 당신이 여기서 어떤 문제인지 묻기 때문에, 제 대답은 노력이 부족하다는 것입니다. 이 문제는 일정 시간 및 선형 공간에서 검색 할 수 있지만 캐시에는 적합하지 않은 솔루션 인 Suffix Trees를 제공합니다. Suffix Arrays는 캐시 친화적 인 동시에 시간 효율적 인 또 다른 옵션입니다.

+0

Suffix Trees의 대안은 N-Grams입니다.성능면에서는 스토리지 효율성이 떨어진다. 그럼에도 불구하고 해결책. –

+1

또 다른 방법은 Gmail 사용을 중단하고 Outlook을 사용하여 돌아가는 것입니다. :-) –

+1

Google은 부분 __words__을 (를) 검색하지만 부분 __numbers__에서는 일치하지 않습니다! 그것은 구별되어야합니다. 예를 들어 부분적인 일련 번호를 찾는 경우 관련 결과가 전혀 나오지 않을 수 있습니다. 나는 지금 이것이 작동하지 않을 것이라고 믿는 충분한 시간을 보냈습니다. – syntaxerror

관련 문제