2012-07-28 5 views
3

내 데이터베이스에는 수천만 개의 제품이 포함되어 있으므로 응답 속도를 높이려면 효율적인 검색 기술이 필요합니다. 처음에는 알파벳이나 쿼리의 초기 문자를 기반으로 여러 테이블을 만들려고했습니다. 그러나 여러 번 실패합니다. 사용자가 "apple ipod touch"대신 "ipod touch"를 검색하면 trie 또는 다른 데이터 구조를 사용하여 구현할 수 있습니까? Google은 그토록 많은 데이터를 어떻게 추적합니까?내 웹 사이트에 효율적인 검색 엔진 만들기

+0

내 웹 사이트의 현재 느린 상태를 볼 수 있습니다. http://compare.buyhatke.com –

+0

좋은 사이트. 이 콘텐츠를 어떻게 얻습니까? API를 사용하거나 사이트의 콘텐츠를 스크랩하고 있습니까? –

+1

당신이 "큰 것을 묻는다"면 SO에 대한 유권자들은 -1이 아닙니다. 좋은 유권자 -1 노력을 보이지 않거나 명확하지 않은 저질의 질문. –

답변

2

전체 텍스트 검색이 필요합니다. MySQL에서 FULLTEXT 색인을 사용하고 MATCH AGAINST 쿼리를 수행 할 수 있습니다.

그러나 저는 Apache Solr에 대해 더 나은 행운을 누릴 것이라고 생각합니다. 그것은 빠르고, 확장 성이 있으며 훨씬 더 좋은 결과를 제공합니다.

+0

저는이 Apache Solr에 대해 전혀 알고 있지 않습니다. 그냥 한 줄 또는 두 줄로 말해 줄 수 있습니까? mysql 데이터베이스와 PHP 사이에 통합 될 수 있습니까? 그리고 웹 사이트에 대한 제안이 있다면 –

+0

Solr는 별도의 검색 색인입니다. 별도로 업데이트해야합니다. MySQL 용 데이터 가져 오기 처리기가있어 데이터베이스에서 직접 데이터를 가져올 수 있습니다. –

5

독자적인 검색 알고리즘을 만드는 것은 어렵습니다. 프로젝트와 비슷한 것을해야 할 때, 전체 데이터베이스를 열 단위로 트래킹하여 모든 것을 검색 한 다음 모든 조건을 검색했습니다. 그것은 원유 였지만 데이터베이스가 현실적으로 1 만 개 이상의 항목을 보유하지 않았기 때문에 효과가있었습니다. 데이터베이스의 크기가 주어지면 사전 제작 된 검색 엔진을 조사하는 것이 훨씬 낫습니다. 이러한 검색 엔진은 실제로 잘 작성되고 최적화됩니다. Joyce Babu가 제안했듯이 Apache Solr은 하나입니다. 만들려는 또 다른 제안은 Sphinx입니다. 하루 2 억 건의 검색을 제공하는 craigslist에 사용되는 것은 위키 피 디아 (Wikipedia)에 따른 것입니다. 그 종류의 힘은 당신이 원하는 것을 다루기에 충분할 것입니다.

+0

제안 해 주셔서 감사합니다. 나는 의심의 여지가있는 경우에 그들을 통과하고 게시 할 것입니다. –

관련 문제