API-シンプルなWeb検索エンジン。目標は、URLの無限のリスト(Webページ)にインデックスを付け、クエリに対して関連するURLをすばやく検索できるようにすることです。このエンジンは、ElasticSearchデータベースを使用しています。
新しいURLのインデックス作成操作は、最初にURLをクロールし、次にページからタイトルとメインのテキストコンテンツを抽出します。次に、URLのデータを表す新しいドキュメントがElasticSearchに保存され、インデックス作成に対応します。
関連するURLを検索すると、エンジンはクエリを各ドキュメント(Webページ)のデータと比較し、関連性によってソートされたクエリに一致するURLのリストを取得します。
この検索エンジンは、UIで使用できます:https://github.com/anthonysigogne/web-search-engine-ui
このAPIは、言語の有限リストで動作します。完全なリストについては、https://www.elastic.co/guide/en/Elasticsearch/reference/current/analysis-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をコマンドにprepend 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のすべてのサービスをリストするには、このエンドポイントをWebブラウザーに入力してください:http:// localhost:5000/
URLを介してWebページにインデックスを付けます。
URL
/索引
方法
POST
フォームデータパラメーション
必須:
url=[string] 、インデックスするURL
成功応答
Successエラー応答
サンプルコール(カール付き)
curl http://localhost:5000/index --data "language=en&url=https://www.byprog.com/en/"
関連するURLのリストを見つけるためのクエリエンジン。 JSONでは、関連性と一致するURLの合計がソートされたマッチングURLのサブリストを返します。
URL
/検索
方法
POST
フォームデータパラメーション
必須:
query=[string] 、検索クエリ
不要:
start=[integer] 、ヒットの開始(デフォルトで0)
hits=[integer] 、クエリによって返されるヒットの数(デフォルトで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