스핑크스 (검색 엔진)

Sphinx (search engine)
스핑크스
Sphinx search logo.jpg
개발자앤드루 악쇼노프
초기 릴리즈2001; 21년(2001)
안정적 해제
3.4.1[1] / 2021년 7월 9일; 6개월 전(2021년 7월 9일)
기록 위치C++
운영 체제Linux, Windows, Solaris, FreeBSD, NetBSD, Mac OS, AIX
유형검색색인
면허증GPLv2 및 상업용, 버전 3 이후 독점
웹사이트sphinxsearch.com Edit this on Wikidata

스핑크스는 클라이언트 애플리케이션에 텍스트 검색 기능을 제공하는 풀텍스트 검색 엔진이다.

개요

스핑크스는 MySQL 데이터베이스 제품군의 독립형 서버 또는 저장 엔진("SphinxSE")으로 사용될 수 있다. 독립 실행형 서버로 실행될 때 스핑크스는 DBMS와 유사하게 작동하며 MySQL, MariaDB, Postgre와 통신할 수 있다.기본 프로토콜을 통한 SQL 또는 ODBC를 통한 ODBC 호환 DBMS. MySQL의 포크인 마리아DB는 스핑크스SE와 함께 유통된다.[2]

스핑크스API

스핑크스가 독립형 서버로 운영되면 스핑크스API를 이용해 응용프로그램을 연결할 수 있다. API의 공식 구현은 PHP, Java, Perl, RubyPython 언어에 사용할 수 있다. 다른 언어에 대한 비공식 구현뿐만 아니라 다양한 제3자[3] 플러그인과 모듈도 이용할 수 있다. 다른 데이터 소스는 사용자 정의 XML 형식의 파이프를 통해 인덱싱할 수 있다.[4]

스핑크스QL

스핑크스 검색 데몬은 MySQL 이진 네트워크 프로토콜을 지원하며 일반 MySQL API 및/또는 클라이언트로 액세스할 수 있다. 스핑크스는 스핑크스QL로 알려진 SQL의 일부를 지원한다. SELECT로 모든 인덱스 유형의 표준 쿼리, INSERT, REFT, DELETE 등으로 RealTime 인덱스 수정 등을 지원한다.

스핑크스SE

스핑크스는 또한 마리아DB와 MySQL 데이터베이스에 특별한 저장 엔진을 제공할 수 있다. 이것은 그 MySQL, MariaDB가 스핑크스와 의사소통을 할 수 있게 해준다. searchd 쿼리를 실행하고 결과를 얻으십시오. 스핑크스 지수는 일반 SQL 테이블처럼 취급된다. 스핑크스SE 저장 엔진은 마리아DB와 함께 선적된다.

전체 텍스트 필드 및 인덱싱

스핑크스는 인덱서를 통해 데이터 세트를 검사하도록 구성된다. 인덱서 프로세스는 주어진 데이터/텍스트에서 전체 텍스트 색인(빠른 키워드 검색을 가능하게 하는 특수 데이터 구조)을 만든다. 전체 텍스트 필드는 스핑크스에 의해 인덱싱되는 결과 콘텐츠로, 키워드를 (빠르게) 검색할 수 있다. 필드의 이름이 지정되며, 검색을 단일 필드(예: "제목"을 통한 검색) 또는 필드의 하위 집합(예: "제목" 및 "추상"만 검색)으로 제한할 수 있다. 스핑크스의 인덱스 포맷은 일반적으로 256개까지 지원한다. 원본 데이터는 스핑크스 지수에 저장되지 않고 인덱싱 과정에서 폐기된다는 점에 유의하십시오. 스핑크스는 당신이 이러한 내용을 다른 곳에 저장한다고 가정한다.

특성

속성은 검색 중에 추가 필터링 및 정렬을 수행하는 데 사용할 수 있는 각 문서와 관련된 추가 값이다. 속성의 이름은 다음과 같다. 속성 이름은 대소문자를 구분하지 않는다. 속성은 전체 텍스트 색인화되지 않고 있는 그대로 색인에 저장된다. 현재 지원되는 속성 유형:

(1.10-109부터);

(2.1.1-169 이후)[5][6]

  • MVA, 다중 값 속성(32비트 부호화되지 않은 정수의 가변 길이 목록)

스핑크스의 JSON 속성

스핑크스는 고전적인 SQL 데이터베이스와 마찬가지로 이른바 고정 스키마, 즉 미리 정의된 속성 열의 집합과 함께 작업한다. 저장된 데이터의 대부분이 실제로 값을 가질 때 이러한 것들은 잘 작동한다: 희박한 데이터를 정적 열에 매핑하는 것은 번거로울 수 있다. 예를 들어 가격 비교 또는 다양한 제품 범주가 있는 경매 사이트를 운영하고 있다고 가정해 보십시오. 가격이나 벤더와 같은 속성의 일부는 모든 상품에 걸쳐 동일하다. 하지만 노트북의 경우 무게, 화면 크기, HDD 유형, RAM 크기 등을 저장해야 한다. 그리고, 예를 들어, 삽의 경우, 색깔, 손잡이 길이 등을 저장하고자 할 것이다. 따라서 단일 범주에 걸쳐 관리가 가능하지만, 모든 범주에 걸쳐 모든 상품에 필요한 모든 구별되는 분야는 매우 다양하다. JSON 필드를 사용하여 이를 극복할 수 있다. JSON 속성 내부에서는 고정된 구조가 필요하지 않다. 당신은 모든 문서에 있을 수도 있고 없을 수도 있는 다양한 키를 가질 수 있다. 당신이 이 열쇠들 중 하나를 걸러내려고 할 때 스핑크스는 JSON 속성에 키가 없는 문서들을 무시하고 그것을 가지고 있는 문서들과만 작업할 것이다.

면허증

버전 3까지 스핑크스는 이중 면허가 있다.

  1. GNU General Public License 버전 2 또는
  2. 독점 라이선스는 GNU GPLv2의 조건에 포함되지 않는 사용 사례에 사용할 수 있다.

버전 3 이후 스핑크스는 향후 소스 코드를 공개하겠다는[7] 약속과 함께 독점화되었다.

스핑크스는 예를 사용한다.

  • Craigslist.org[8]
  • 모집.aleph-graymatter.com[9]
  • Tradebit.com[10]
  • vBulletin.com[11]
  • 미디어위키 확장기[12]
  • Boardreader.com[13]
  • OMBE.com[14]
  • Limundo.com[14]

피쳐 리스트

  • 배치 및 증분(소프트 실시간) 전체 텍스트 색인.
  • 비 텍스트 속성(scalar, 문자열, 세트, JSON) 지원.
  • SQL 데이터베이스의 직접 색인화. MySQL, MariaDB, Postgre에 대한 기본 지원SQL, MSSQLODBC 연결.
  • XML 문서 인덱싱 지원.
  • 분산 검색 지원 즉시 사용 가능
  • 액세스 API를 통한 통합.
  • MySQL 프로토콜을 통한 SQL 유사 구문 지원(0.9.9 이후)
  • 전체 텍스트 검색 구문.
  • 데이터베이스와 유사한 결과 집합 처리.
  • 표준 BM25 외에 추가 요소를 활용한 관련성 순위.
  • SBCSUTF-8 인코딩에 대한 텍스트 처리 지원, 중지어, 데이터베이스에 나타나지 않는 것으로 알려진 단어의 색인화("히트리스"), 발생, 단어 양식, 토큰화 예외, "블렌드 문자"(실제 문자 및 단어 구분자 모두로 이중 색인화)
  • UDF 지원(2.0.1 이후)

성능 및 확장성

  • 코어 및 HDD당 최대 10-15MB/초의 인덱싱 속도
  • RAM이 2GB인 2코어 데스크톱 시스템을 사용하여 초당 500개 이상의 검색 속도 100만 개의 문서/[15]1.2GB 컬렉션 검색
  • 스핑크스를 이용한 가장 큰 규모의 설치물인 Boardreader.com은 160억 개의 문서를 색인화한다.[16]
  • 가장 붐비는 설치물인 Craigslist는 하루[16] 3억 건 이상의 질의와 월 500억 건 이상의 페이지 뷰를 제공한다.[17]

참고 항목

참조

  1. ^ https://sphinxsearch.com/downloads/current/.
  2. ^ "AskMonty: About SphinxSE". http://kb.askmonty.org. Monty Program AB. Retrieved 16 August 2013. {{cite web}}: 외부 링크 위치 website= (도움말)
  3. ^ "Sphinx Wiki: Third Party Tools". http://sphinxsearch.com. Sphinx Search Wiki. Retrieved 16 August 2013. {{cite web}}: 외부 링크 위치 website= (도움말)
  4. ^ "xmlpipe2". http://sphinxsearch.com. Sphinx Search Documentation. Retrieved 16 August 2013. {{cite web}}: 외부 링크 위치 website= (도움말)
  5. ^ "JSON Attributes in Sphinx 2.1.1". http://sphinxsearch.com. Sphinx Search Blog. 7 February 2013. Retrieved 16 August 2013. {{cite web}}: 외부 링크 위치 website= (도움말)
  6. ^ "Full JSON Support in Trunk". http://sphinxsearch.com. Sphinx Search Blog. 8 August 2013. Retrieved 16 August 2013. {{cite web}}: 외부 링크 위치 website= (도움말)
  7. ^ "Sphinx Open Source Search Server".
  8. ^ "Sphinx at Craigslist". http://craigslist.org. Craigslist. Retrieved 17 August 2013. {{cite web}}: 외부 링크 위치 website= (도움말)
  9. ^ "GM Recruitment". http://www.aleph-networks.com. Aleph-networks. Retrieved 1 October 2012. {{cite web}}: 외부 링크 위치 website= (도움말)
  10. ^ "Lighting Fast PHP Site Search". http://tradebit.com. Tradebit. Retrieved 17 August 2013. {{cite web}}: 외부 링크 위치 website= (도움말)
  11. ^ "Sphinx Search beta for Vbulletin 4.0". http://vbulletin.com. Vbulletin. Retrieved 17 August 2013. {{cite web}}: 외부 링크 위치 website= (도움말)
  12. ^ "Sphinx Search Extension for MediaWiki". http://mediawiki.org. MediaWiki: Svemir Brkic, Paul Grinberg. Retrieved 17 August 2013. {{cite web}}: 외부 링크 위치 website= (도움말)
  13. ^ "Powered by Sphinx Search: Boardreader". http://sphinxsearch.com. Sphinx Search. Retrieved 17 August 2013. {{cite web}}: 외부 링크 위치 website= (도움말)
  14. ^ a b "Powered by Sphinx". sphinxsearch.com/.{{cite web}}: CS1 maint : url-status (링크)
  15. ^ "About Sphinx". http://sphinxsearch.com. Sphinx Search. Retrieved 16 August 2013. {{cite web}}: 외부 링크 위치 website= (도움말)
  16. ^ a b "Powered by Sphinx". http://sphinxsearch.com. Sphinx Search. Retrieved 10 May 2015. {{cite web}}: 외부 링크 위치 website= (도움말)
  17. ^ "Craigslist: Factsheet". http://www.craigslist.org. Craigslist. Archived from the original on 5 August 2012. Retrieved 16 August 2013. {{cite web}}: 외부 링크 위치 website= (도움말)

추가 읽기

외부 링크