복붙노트

[SQL] 어떻게 PHP와 MySQL과 간단한 사이트 검색을 구현하는 것이?

SQL

어떻게 PHP와 MySQL과 간단한 사이트 검색을 구현하는 것이?

나는 사용자가 견적을 제출 할 수있는 사이트를 만드는거야. 어떻게 만드는 방법에 대해 갈 것 (비교적 간단?) 그 반환 가장 관련성이 따옴표를 검색?

검색 용어가 있다면 예를 들어, "칠면조"그때는 한 번만 표시되는 위치 단어 "칠면조"따옴표 전에 두 번 표시 따옴표를 반환 할 것입니다.

(I는 무관 한 결과 도와 필터에 몇 가지 다른 규칙을 추가,하지만 내 주요 관심사는이다.)

해결법

  1. ==============================

    1.모든 사람은 그러나 당신이 거대한주의해야 할 점을 알고 있어야합니다, MySQL의 전체 텍스트 검색을 제안한다. 전체 텍스트 검색 엔진 (인해 참조 무결성 및 ACID 준수에 가장 일반적으로 사용되는 엔진입니다하지 이노 등)의 MyISAM 엔진에 대해서만 사용할 수 있습니다.

    모든 사람은 그러나 당신이 거대한주의해야 할 점을 알고 있어야합니다, MySQL의 전체 텍스트 검색을 제안한다. 전체 텍스트 검색 엔진 (인해 참조 무결성 및 ACID 준수에 가장 일반적으로 사용되는 엔진입니다하지 이노 등)의 MyISAM 엔진에 대해서만 사용할 수 있습니다.

    당신이 그래서 몇 가지 옵션이 있습니다 :

    1. 가장 간단한 방법은 입자 트리에 의해 설명되어 있습니다. 당신은 actaully 순수 SQL (NO 전체 텍스트, 아니 아무것도)의 오프 검색 순위 얻을 수 있습니다. SQL 쿼리 아래의 검색 필드에서 문자열의 발생 수를 기반으로 테이블 및 순위 결과를 검색합니다 :

    SELECT
        SUM(((LENGTH(p.body) - LENGTH(REPLACE(p.body, 'term', '')))/4) +
            ((LENGTH(p.body) - LENGTH(REPLACE(p.body, 'search', '')))/6))
        AS Occurrences
    FROM
        posts AS p
    GROUP BY
        p.id
    ORDER BY
        Occurrences DESC
    

    편집 그 예는 비트 더 선명도를 제공하는

    (p.body LIKE '% 무엇이든 % 당신에게 %의 희망을') 등 아마 당신을 얻을 것이다 문이 정확하게 당신이 필요로 WHERE 추가 위의 SQL 쿼리에 유사.

    2. 전체 텍스트를 지원하는 데이터베이스 스키마를 변경할 수 있습니다. 종종 자신의 테이블에 인용 데이터를 분할 MySQL 용 스핑크스 전체 텍스트 검색 엔진과 같은 플러그인을 설치하지 않고 InnoDB의 참조 무결성, ACID 준수 및 속도를 유지하기 위해 무엇을 수행한다. 기본적으로 당신은 오히려 당신의 텍스트 필드에 "데이터"를하는 것보다 당신이 참조 "quote_data_id"을 가지고 있다는 InnoDB의 테이블 인 테이블 지수있을 것입니다 MyISAM 테이블 인 Quote_Data 테이블에서 ID에있는 점. 당신은 MyISAM 테이블에 전체 텍스트를 할 당신이 당신의 결과가 당신의 InnoDB 테이블과 짜잔 반환 ID를 가입 할 수 있습니다.

    스핑크스를 설치합니다. 이 일에 행운을 빕니다.

    당신이 설명한 것을 감안할 때, 내가보기 엔 당신이 간단한 데이터베이스 기반 사이트가 있기 때문에 당신은 내가 제시 한 첫 번째 방법을 추천 할 것입니다. 제 1 회 솔루션을 가져, 신속하게 수행 할 작업 간단하다. 당신이 루씬은 인덱스 파일이 아닌 데이터베이스에 주로 설계로 데이터베이스와 통합 할 경우 특히 루씬은 설정에 나쁜 것입니다. 구글 사용자 지정 사이트 검색은 평판의 사이트 잃게 톤을 만드는 (당신은 아마추어 보면 해킹한다)와 MySQL의 전체 텍스트는 대부분 당신은 당신의 데이터베이스 스키마를 변경하는 것입니다 원인.

  2. ==============================

    2.구글 맞춤 사이트 검색을 사용하십시오. 나는 그들이 일 또는 검색에 대한 두 가지를 알고 들었습니다.

    구글 맞춤 사이트 검색을 사용하십시오. 나는 그들이 일 또는 검색에 대한 두 가지를 알고 들었습니다.

  3. ==============================

    3.루씬 검색 엔진을 사용하는 계획을 유래. 이 젠드 프레임 워크 용으로 작성된이의 PHP 포트는 있지만 모든 ZF의 팽창을 필요로하지 않고 별도의 엔티티로 다운로드 할 수 있습니다. 이는 대한 문서는 여기에서 찾을 수 있습니다, Zend_Search_Lucene이라고합니다.

    루씬 검색 엔진을 사용하는 계획을 유래. 이 젠드 프레임 워크 용으로 작성된이의 PHP 포트는 있지만 모든 ZF의 팽창을 필요로하지 않고 별도의 엔티티로 다운로드 할 수 있습니다. 이는 대한 문서는 여기에서 찾을 수 있습니다, Zend_Search_Lucene이라고합니다.

  4. ==============================

    4.그에 대한 귀하의 SQL은 (당신이 그것을에서 '칠면조'와 따옴표를 찾기 위해 노력하고) 다음과 같이 보일 것입니다 :

    그에 대한 귀하의 SQL은 (당신이 그것을에서 '칠면조'와 따옴표를 찾기 위해 노력하고) 다음과 같이 보일 것입니다 :

    SELECT * FROM Quotes
    WHERE the_quote LIKE "%turkeyt%";
    

    거기에서 당신은 당신을 토해내 무엇과 무엇을 알아낼 수 있습니다.

    www가에서이 퍼팅에 특히 경우에있는 거 계획, 제대로 악의적 인 사용자가 데이터베이스에 악의적 인 SQL 주입 수있는 경우를 처리하기 위해주의해야합니다. 당신이 비록 재미를 위해이 일을하고 있다면, 나는 당신이 배우고 싶은 것에 대해 같아요.

    데이터베이스 및 SQL 수있는 좋은 방법입니다 새 당신이 경우에, 나는 sqlite가 이상 mysql을하는 것이 좋습니다. 더는 설정과 같이 설정하지 않고 작업 할 훨씬 쉽게. 그것은 설치하고 처음으로 MySQL을 설정해야하는 잠재적 인 두통의 주위에 당신을 얻을 수 있습니다.

  5. ==============================

    5.http://hockinson.com/fulltext-search-of-mysql-database-table.html : 난 여기에 전체 텍스트 검색, 표정으로 가고 싶어

    http://hockinson.com/fulltext-search-of-mysql-database-table.html : 난 여기에 전체 텍스트 검색, 표정으로 가고 싶어

  6. ==============================

    6.당신이 당신의 자신을 작성하려는 경우, phpBB를 구현에서보세요. 그들은 두 개의 테이블을 가지고, 첫 번째 항목에 표시되는 모든 단어의 고유 한 목록이고, 두 번째는 단어와 항목 사이의 다 대다 참조입니다. 그런 다음 그룹을하고 당신이 찾고있는 방식으로 항목을 정렬하는 셀 수 있습니다.

    당신이 당신의 자신을 작성하려는 경우, phpBB를 구현에서보세요. 그들은 두 개의 테이블을 가지고, 첫 번째 항목에 표시되는 모든 단어의 고유 한 목록이고, 두 번째는 단어와 항목 사이의 다 대다 참조입니다. 그런 다음 그룹을하고 당신이 찾고있는 방식으로 항목을 정렬하는 셀 수 있습니다.

    그런 다음 타사 검색 엔진 (또는 전체 텍스트 검색)을 구현하는 많은 더 일하지만 그것은 당신에게 결과를보다 제어 할 수 있습니다.

  7. ==============================

    7.스핑크스 루씬에 대한 대안으로서, 비교적 간단한 검색 엔진은 Xapian 라이브러리를 사용하여 생성 될 수있다.

    스핑크스 루씬에 대한 대안으로서, 비교적 간단한 검색 엔진은 Xapian 라이브러리를 사용하여 생성 될 수있다.

    + (예 : 관련성 순위로) 많은 고급 검색 기능을 지원합니다 + 빠른

    - 당신은 당신의 인터페이스를 생성하기 위해 API를 배울 필요 - 설치하는 PHP 확장이 필요

    Xapian는 MySQL의에 별도의 인덱스에 데이터를 저장하는 것도 있습니다.

    당신은 또한 SOLR, Xapian 및 Lucene에 대한 래퍼입니다 사료에 관심이있을 수 있습니다.

    Xapian 사람들은 Xapian에 대한 프론트 엔드 인 오메가 검색 엔진을 생성하고, CGI를 통해 호출 할 수 있습니다.

  8. ==============================

    8.구글 맞춤 사이트 검색하면 많이를 조회하지 않는 경우, 좋은 또는 지불 방법입니다 기꺼이 당신이 경우에 (난 당신이 무료로 1K 쿼리 / 일을 얻을 생각).

    구글 맞춤 사이트 검색하면 많이를 조회하지 않는 경우, 좋은 또는 지불 방법입니다 기꺼이 당신이 경우에 (난 당신이 무료로 1K 쿼리 / 일을 얻을 생각).

    (이전에 언급 된 것처럼)의 MySQL의 전체 텍스트 검색에서도 많은 정보를 얻으실 수 있습니다.

    야후의 보스는 흥미로운 프로젝트입니다 - 내 다음 검색 프로젝트 중에 총을 줄거야.

    당신은 전체 텍스트보다 더 많은 전력이 필요하지만, 자신의 검색 엔진을 조정할하려는 경우 그리고 마지막으로, 루씬은 훌륭한 자원이다. http://lucene.apache.org

  9. ==============================

    9.나는 며칠 전 줌 검색 엔진을 가로 질러 와서 이것이 내가 사용한 간단한 검색 엔진이 될 것 같아요.

    나는 며칠 전 줌 검색 엔진을 가로 질러 와서 이것이 내가 사용한 간단한 검색 엔진이 될 것 같아요.

    윈도우 기반의 툴은 또한, 당신이 사용하고자하는 어떤 언어 (PHP, ASP.NET, 자바 스크립트 등)을 요청, 사이트의 데이터베이스를 만듭니다. 나는 PHP를 포착하고 그것은 나를 위해 PHP 코드를 내장. 모든, 내가 서버에 파일을 업로드 한 후해야 할 일을했을 (선택 사항) 템플릿과 사이트 검색이 작동 된 사용자 정의 할 수 있습니다.

    이 작은 사이트에 무료이며, 내가 찾을 수있는 유일한 죄수는 거미 도구 (데이터베이스 빌더) 윈도우에서 실행하는 것입니다.

  10. from https://stackoverflow.com/questions/386914/how-would-i-implement-a-simple-site-search-with-php-and-mysql by cc-by-sa and MIT license