API- 간단한 웹 검색 엔진. 목표는 무한한 URL 목록 (웹 페이지)을 인덱싱 한 다음 쿼리에서 관련 URL을 빠르게 검색 할 수있는 것입니다. 이 엔진은 Elasticsearch 데이터베이스를 사용합니다.
새 URL의 인덱싱 작업은 먼저 URL을 크롤링 한 다음 페이지에서 제목과 본문 내용을 추출합니다. 그런 다음 URL 데이터를 나타내는 새로운 문서가 Elasticsearch에 저장되어 인덱싱을 위해 진행됩니다.
관련 URL을 검색 할 때 엔진은 쿼리를 각 문서의 데이터 (웹 페이지)와 비교하고 관련성으로 정렬 된 쿼리와 일치하는 URL 목록을 검색합니다.
이 검색 엔진은 UI : https://github.com/anthonysigogne/web-search-engine-ui와 함께 사용할 수 있습니다.
이 API는 유한 한 언어 목록에 대해 작동합니다. 전체 목록은 여기를 참조하십시오 : https://www.elastic.co/guide/en/elasticsearch/reference/current/analysy-lang-analyzer.html.
데모는 여기에서 찾을 수 있습니다 : http://searchengine.byprog.com/
뉴스 네트워크의 약 500 개의 프랑스 URL과 500 개의 영어 URL이 http://www.france24.com/을 색인화했습니다.
이 도구에는 Python3+ 및 Elasticsearch5+가 필요합니다.
git clone https://github.com/AnthonySigogne/web-search-engine.git
cd web-search-engine
pip install -r requirements.txt
그런 다음 도구를 실행하십시오.
FLASK_APP=index.py HOST=<ip> PORT=<port> USERNAME=<username> PASSWORD=<password> flask run
어디 :
ip + port : Elasticsearch로가는 경로username + password : 액세스 할 자격 증명 디버그 모드에서 실행하려면 FLASK_DEBUG=1 명령에 따라 :
FLASK_DEBUG=1 ... flask run
Docker와 함께 도구를 실행하려면 DockerHub 이미지를 사용할 수 있습니다 : https://hub.docker.com/r/anthonysigogne/web-search-engine/
docker run -p 5000:5000
-e "HOST=<ip>"
-e "PORT=<port>"
-e "USERNAME=<username>"
-e "PASSWORD=<password>"
anthonysigogne/web-search-engine
어디 :
ip + port : Elasticsearch로가는 경로username + password : elasticsearch에 액세스하기위한 자격 증명또는 Docker 이미지를 자신에게 구축하십시오.
git clone https://github.com/AnthonySigogne/web-search-engine.git
cd web-search-engine
docker build -t web-search-engine .
API의 모든 서비스를 나열하려면 웹 브라우저 에이 엔드 포인트를 입력하십시오 : http : // localhost : 5000/
URL을 통해 웹 페이지를 색인하십시오.
URL
/색인
방법
POST
양식 데이터 매개 변수
필수의:
url=[string] , INDIX의 URL
성공 대응
Success오류 응답
샘플 통화 (컬 포함)
curl http://localhost:5000/index --data "language=en&url=https://www.byprog.com/en/"
관련 URL 목록을 찾는 쿼리 엔진. JSON에서 관련성으로 정렬 된 일치하는 URL의 하위 목록을 반환하십시오.
URL
/찾다
방법
POST
양식 데이터 매개 변수
필수의:
query=[string] , 검색 쿼리
필수 :
start=[integer] , 적중 시작 (기본적으로 0)
hits=[integer] , Query에 의해 반환 된 적중 수 (기본적으로 10)
highlight=[integer] , 각 URL에 대한 하이라이트 부품을 반환합니다 (기본적으로 0 또는 1, 0)
성공 대응
{
"total": 1,
"results": [
{
"title": "Anthony Sigogne / Freelance / Full-Stack Developer",
"description": "Full-Stack Developer specialized in new technologies and innovative IT solutions.",
"url": "https://www.byprog.com/en/"
}
]
}
오류 응답
샘플 통화 (컬 포함)
curl http://localhost:5000/search --data "query=freelance fullstack"
MIT