このリポジトリには、Bing のスーパーフレッシュ、ニュース、メディア インデックスで使用される BitFunnel インデックスのコードが含まれています。このアルゴリズムについては、SIGIR 2017 で発表された論文「BitFunnel: Revisiting Signatures for Search」で説明されています。このビデオでは、アルゴリズムの概要がよくわかります。
ここのコードベースは、研究コミュニティが SIGIR 論文の結果を再現できるようにするために公開されました。ドキュメントは非常に薄いですが、以下を参照することをお勧めします。
BitFunnel をビルドするには、CMake (2.8.11 以降) と最新の C++ コンパイラー (gcc 5 以降、clang 3.5 以降、または VC 2015 以降) が必要です。 CMake を直接実行して、プラットフォームに適切なビルド セットアップを生成できます。あるいは、使用できるデフォルトを備えたスクリプトがいくつかあります。
*nix プラットフォーム (OS X を含む) の場合、
./Configure_Make.sh
cd build-make
make
make test
これらの手順はmake
ビルドに関するものですが、 cmake
コマンドを変更してMakefiles
の代わりにninja
ファイルを作成することで、 ninja
使用してビルドすることも可能であることに注意してください。一部の開発者にとってninja
追加の依存関係をインストールする必要があるため、これらは手順には記載されていませんが、 ninja
を使用したい場合は、 apt-get
、 brew
などを介して利用でき、 make
よりも大幅に高速です。
Ubuntu 15 以降を使用している場合は、次のコマンドを使用して依存関係をインストールできます。
sudo apt-get install clang cmake
Ubuntu 14 以前では、新しいバージョンの CMake をインストールする必要があります。十分に新しい CMake をインストールするには、このリンクを参照してください。 gcc を使用している場合は、gcc-5 があることも確認する必要があります ( sudo apt-get install g++-5
)。
デフォルトのコンパイラをオーバーライドするには、 CXX
およびCC
環境変数を設定します。たとえば、clang-3.8 をclang-3.8
としてインストールし、bash を使用している場合:
export CXX="clang++-3.8"
export CC="clang-3.8"
XCode をインストールし、次のコマンドを実行して Homebrew (http://brew.sh/) を使用して必要なパッケージをインストールします。
brew install cmake
BitFunnel は、標準の *nix makefile または XCode を使用して OS X 上に構築できます。 Makefile を生成してビルドするには、ルートBitFunnel
ディレクトリで次を実行します。
Makefile を使用する代わりに Xcode プロジェクトを作成する場合は、次を実行します。
./Configure_XCode.sh
XCode を使用する場合は、ソース ファイルが追加または削除されたときなど、 CMakeLists
が変更されたときに、 Configure_XCode
再実行するか、 ZERO_CHECK
ターゲットを実行する必要があります。
次のツールが必要になります。
注: Visual Studio を初めてインストールし、デフォルトのインストール オプションを選択した場合、C++ コンパイラは入手できません。 C++ コンパイラのインストールを強制するには、新しい C++ プロジェクトを作成するか、既存の C++ プロジェクトを開く必要があります。
BitFunnel リポジトリのクローンを作成し、BitFunnel のルート フォルダーで次のコマンドを実行します。
.Configure_MSVC.bat
注: 別のバージョンの Visual Studio を使用する場合は、CMake -G オプションを変更する必要があります。 Bitfunnel は 64 ビット プログラムとしてビルドする必要があるため、「Win64」は指定された G オプション テキストの一部である必要があります。
この時点で、生成されたソリューションBitFunnel_CMake.sln
Visual Studio から開き、ビルドできます。あるいは、 cmake --build build-MSVC
使用してコマンド ラインからビルドすることもできます。