2009-07-20 1 views
1

저는 PHP로 처음부터 포럼을 구축하고 있습니다. 나는 대부분의 phpBB : 데이터베이스 구조를 사용했다.큰 포럼에서 빠른 검색 기능을 개발할 수 있습니까?

하지만 이제는 검색 기능에 대해 생각하고 있습니까? 모든 게시물에서 정말 빠르게 검색 할 수있는 좋은 디자인은 무엇입니까? 나는 mysql에서 단지 % query_string %보다 좋은 방법이 있어야만한다고 생각한다. :)

어쩌면 모든 문장을 단어로 분해하고 단어를 해시 테이블의 키로 만들고 그 값을 모든 게시물의 쉼표로 구분 된 목록으로 만들 수있다. 그 단어가 들어 있니? 그럼 게시물을 삭제하면 조금 더 문제가 있지만 그 접근 방식이 더 좋다고 생각합니다.

간단한 솔루션을 사용할 수있을 것 같아서 포럼이 커지면 코드를 변경하고 싶지 않습니다.

어떤 아이디어라도 주셔서 감사합니다 또는 올바른 방향으로 나를 가리킬 수 있다면!

+1

Google을 사용해보세요. –

+1

Google을 제외한 가장 좋은 방법은 아마도 Lucene과 같은 전용 검색 소프트웨어 일 것입니다. – derobert

답변

1

오늘 나를위한 최선의 방법은 sphinx search입니다. 그것은 php, rails, perl과 함께 사용할 수 있으며, 지금까지는 매력처럼 작동했습니다. php solution을 확인할 수 있습니다. Craiglist 예를 들어 그것을 사용하십시오.

+0

Lucene이 utf8을 지원하지 않기 때문에 팁을 주셔서 감사합니다. –

+1

Zend Lucene은 utf8을 기본값으로 사용합니다. http://framework.zend.com/manual/en/zend.search.lucene.best-practice.html#zend.search.lucene.best-practice.encoding –

1

가 바퀴를 재발견하지 마십시오. Lucene을 한번보세요. PHP를위한 포트도 있습니다 :

Zend Lucene

루씬은 당신을 위해 구문 분석 및 인덱싱을 수행하고 쿼리는 번개로 빠르다.

0

대부분의 포럼 사용자는 단순한 문자열 검색 이상의 것을 원할 것입니다. 그들은 그들이 원하는 정확한 구를 모르거나 "포럼 검색"을 검색 할 때 관련 용어를 포함하지만 순서가 다른 단어로 분리 된 "포럼 검색 방법"에 대한 결과를 찾기가 매우 기쁩니다. .

그들은 또한 필요한 맞춤법을 모르는 경우 약간의 퍼지 검색이 필요할 수 있습니다. 그들은 "sequal"을 검색하고 "sql"을 원할 수 있습니다.

이 모든 것은 사용자의 유사 검색보다 더 복잡한 솔루션을 지적합니다.

지금 가장 중요한 포인터는 구현 한 모든 것이 나중에 더 나은 것을 위해 쉽게 전환 할 수 있어야한다는 것입니다. 나중에 변경하려는 경우 검색을 통해 핫 스왑 가능 여부를 확인하십시오.