「数カ月前に読んだはずの記事を探そうとしても、キーワードが曖昧で検索エンジンやブラウザ履歴から目的のページを見つけにくい」というケースがあります。メタ検索エンジンsearxの作者が新たに開発した「Hister」は、ChromeやFirefoxで開いたWebページをセルフホスト環境に保存し、自分専用の検索インデックスを作成できる無料のオープンソース検索エンジンです。セマンティック検索やMCP連携にも対応しており、訪問済みページだけでなくローカルファイルもまとめて扱えます。

Hister - Your Own Search Engine

https://hister.org/



asciimoo/hister: Your own search engine

https://github.com/asciimoo/hister

◆Histerの使い方と動作

Histerサーバーを起動し、Chromeの拡張機能もしくはFirefoxの拡張機能をインストール後、ブラウザでサイトを閲覧するだけで自動的に以下の内容がサーバーに送信されます。

・ページの完全なURL

・ページタイトル

・ページの全文

・ファビコン

・訪問した時のタイムスタンプ

・HTMLドキュメント全体

同じページを閲覧した際にページの内容が更新されていた場合は、更新された内容をサーバーに送信します。

◆ウェブアプリケーションと機能

ブラウザで「http://127.0.0.1:4433」にアクセスするとHisterの検索ページが表示されます。「Search」欄に文字を入力すると…



検索ページに移動し入力内容に合わせて候補がリアルタイムに絞り込まれます。



検索欄では複数の単語が含まれるAND検索や除外するワードの指定・ドメインを限定するなどの検索も可能です。



ただし、日本語で除外設定をしたところ正しく機能するケースと必要以上に除外してしまうケースがありました。



サーバーは受け取ったページのデータをインデックス化しており、検索時に以下の機能が提供されます。

・関連性ランキング:検索語句がタイトルに含まれ、かつコンテンツ内にも複数回出現するページは検索語句が一度だけ軽く触れられているページよりも上位にランク付けされます。

・キーワードエイリアス:例として「go」を「go」と「golang」の両方のエイリアスとして設定すると「go 【文字列】」で検索したときに「Golang 【文字列】」として参照しているページが見つかります。

・優先検索結果:特定の検索でどのページを開いたかを自動的に学習し、次回以降はそれらのページを優先的に表示します。また、特定の検索クエリに対して常に上位に表示されるように結果を手動で固定できます。

・重複検出:同じページを複数回訪問した場合、Histerは重複したエントリを作成するのではなく既存のエントリを自動的に更新します。

◆コマンドラインツール

ブラウザからの履歴の取得やローカルファイルの収集はコマンドラインツールを利用します。ブラウザの履歴を取得するコマンドは以下のとおり。過去すべての履歴を実際にアクセスして取得するため時間がかかります。


# ファイル名はダウンロードした時の名前に入れ替えてください
# 自動的にインストールされているブラウザ全てを走査する場合
hister_0.15.0_windows_amd64.exe import-browser

# ブラウザを指定する場合
hister_0.15.0_windows_amd64.exe import chrome "C:\Users\【ユーザー名】\AppData\Local\Google\Chrome\User Data\Default\History"


ローカルファイルの場合、config.ymlを作成。


hister_0.15.0_windows_amd64.exe create-config "config.yml"


作成されたconfig.ymlにフォルダ名や拡張子を登録。


# indexer部分を探しdirectories: にパスや拡張子を登録
indexer:
detect_languages: true
directories:
- path: 'C:\Users\【ユーザー】\Documents'
filetypes: ['txt', 'md', 'pdf', 'docx']
excludes: ['*secret*', '*.tmp']
max_file_size_mb: 1


Histerサーバーを起動すると自動的に指定されたフォルダを参照しデータを収集し、フォルダに追加されたり更新されたりしたファイルも自動的に検知して追加・更新します。


hister_0.15.0_windows_amd64.exe listen


ファイルの内容で検索すると検索結果にファイルの一覧が表示されました。



◆セマンティック検索

OllamaやOpenAI互換Embedding APIが利用できる環境であれば、config.ymlのsemantic_searchを有効化することで利用可能です。


semantic_search:
# 有効化
enable: true
embedding_endpoint: http://localhost:11434/v1/embeddings
# モデルを記入
embedding_model: qwen3-embedding:8b
api_key: ""
headers: {}
# モデルを変更する場合はdimensionsを合わせる
dimensions: 4096
max_context_length: 4096
chunk_overlap: 128
query_prefix: 'query: '
document_prefix: ""
similarity_threshold: 0.1
result_limit: 50
semantic_weight: 0.4


検索すると入力した単語との類似度が数値化され表示されています。日本語の場合は文字を分解して一部がヒットすればカウントされるという傾向でした。



◆MCPサーバー

Claude CodeなどのMCP対応クライアントからHisterのインデックスを検索できます。Claude CodeにMCPとして追加。


claude mcp add --transport http hister http://127.0.0.1:4433/mcp --header "Origin: hister://"


Claude Codeを起動し「histerを利用してGIGAZINEの記事からAIに関する記事をピックアップして」と入力すると、インデックスされているデータの中から該当する記事がピックアップされました。「大規模言語モデルに精度・知識の更新速度・回答の透明性などを与える『RAG』」としての利用も可能です。



◆作者自身の使い方

作者自身は以下のフローで利用しているとのこと。

・Histerをすぐ開けるホットキーを設定

・まずHisterで探す

・結果が薄い場合は外部検索へ渡す

さらにSkip Rulesやエイリアスの設定、優先結果から不要エントリを削除などのメンテナンスを行っています。

◆まとめ

セマンティック検索が日本語では単なる文字の分解にとどまるなど、日本語での利用では十分とは言えませんが、サイトを閲覧するだけでローカルにデータが保存できる点だけでも十分利用する価値があります。

◆Histerのサーバー構築方法

今回はWindows 11で構築します。リポジトリのリリースから最新の実行ファイルをダウンロード。



コマンドラインでの起動が必要なので、コマンドプロンプトもしくはPowerShellを起動し「listen」オプションを引数に指定して実行します。


hister_0.15.0_windows_amd64.exe listen


Histerが起動したらブラウザで「http://127.0.0.1:4433」にアクセスし、検索画面が表示されれば導入完了です。



◆Chrome用拡張機能をインストール

以下のリンク先にアクセス。

Hister - Chrome ウェブストア

https://chromewebstore.google.com/detail/hister/cciilamhchpmbdnniabclekddabkifhb

「Chromeに追加」をクリック。



追加の確認ダイアログが表示されるので「拡張機能を追加」をクリック。



インストールが完了し、あとはページを閲覧するだけで自動的にHisterサーバーへデータが送信されます。



数ページ閲覧後「http://127.0.0.1:4433」にアクセスし「indexed pages」の数字が増えていれば正常に動作しています。



◆Firefox用拡張機能をインストール

以下のリンク先にアクセス。

Hister - Get this Extension for Firefox

https://addons.mozilla.org/ja/firefox/addon/hister/

「Firefoxへ追加」をクリック。



追加の確認ダイアログが表示されるので「追加」をクリック。



インストールが完了し、あとはページを閲覧するだけで自動的にHisterサーバーへデータが送信されます。



数ページ閲覧後「http://127.0.0.1:4433」にアクセスし「indexed pages」の数字が増えていれば正常に動作しています。