diff --git a/build.sbt b/build.sbt index 658908be3..f5108d6b4 100644 --- a/build.sbt +++ b/build.sbt @@ -1,4 +1,5 @@ import ElasticsearchPluginPlugin.autoImport.* +import org.typelevel.sbt.tpolecat.{CiMode, DevMode} import org.typelevel.scalacoptions.* Global / scalaVersion := "3.3.3" @@ -9,7 +10,13 @@ lazy val CirceVersion = "0.14.9" lazy val ElasticsearchVersion = "8.15.0" lazy val Elastic4sVersion = "8.14.1" lazy val ElastiknnVersion = IO.read(file("version")).strip() -lazy val LuceneVersion = "9.10.0" +lazy val LuceneVersion = "9.11.1" + +// Setting this to simplify local development. +// https://github.com/typelevel/sbt-tpolecat/tree/v0.5.1?tab=readme-ov-file#modes +ThisBuild / tpolecatOptionsMode := { + if (sys.env.get("CI").contains("true")) CiMode else DevMode +} lazy val TestSettings = Seq( Test / parallelExecution := false, diff --git a/docs/pages/performance/fashion-mnist/plot.b64 b/docs/pages/performance/fashion-mnist/plot.b64 index 7f7100a78..f59545aaf 100644 --- a/docs/pages/performance/fashion-mnist/plot.b64 +++ b/docs/pages/performance/fashion-mnist/plot.b64 @@ -1 +1 @@ -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vfWWtmzZUuAKol69eumhhx7Sv/71Lz311FNq2bKlJHn/K+VeqnLdddfp7rvv1p133qnmzZtLyr0crVWrVho2bJiCgoL0448/6r777pPH49H999/vffwzzzyjF198UYMHD9bgwYO1du1a9e/fX1lZWT65FHY+GoahYcOGacGCBbr99tvVvn17zZkzR4899pgOHjyot956S9WqVdPEiRP10ksvKS0tTWPHjvW+rokTJ+qRRx5R3bp19de//lWSVK1atYv58lyyBx54QFFRUXruuee8c3bv3r3eolRB5s2bp99//1233nqratasqS1btuijjz7Sli1btHLlSr/Hjho1So0aNdLYsWO1du1affLJJ6pevbpeffVVb8wdd9yhL7/8Utdff7169Oih+fPnF+rSwZYtW+r555/XM888o7vuusv7YUKPHj0kyXuu69Kli8aOHaujR4/qnXfe0bJly7Ru3bp8V15JhZubO3fu1MiRI3X77bfr5ptv1meffaZbbrlFnTp18q6EK+p5Lj8FfQ+c6+DBg96izJNPPimHw6FPPvmkwBVAF8q/MO/BhRTmfHw+ixYt0jfffKOHHnpIwcHBev/99zVw4ED98ssv3vPK0aNH1b17d2+xpVq1apo1a5Zuv/12nTlzRg8//PB550mdOnWUkpKiAwcOeC+5DAsLk1S0nxVS7iWa3377rR544AFVrVq1TF7+BwABZwC47I0fP96QZCQlJRl//PGHsX//fmPKlClGtWrVjODgYGP//v3e2ISEBKNNmzZGRkaGd8zj8Rg9evQwmjVr5h175plnDEnG999/7/d8Ho/HMAzDyM7ONjIzM332nTp1yqhRo4Zx2223+YxLMp599lm/nHfv3n3B1xcVFWW0a9fuvDEPPfSQIcnYuHGjYRiG8eyzzxr5neLOfd7U1FQjKirKuPPOO33ijhw5YkRGRvqM33zzzYYk44knnvA77s0332w0aNDAu71kyRJDkvHVV1/5xM2ePdtnfOrUqYYkY9WqVed9fflp0KCBIcn47rvvvGMpKSlGrVq1jA4dOnjHXnjhBcPhcBg7duzwefwTTzxhWCwWY9++fYZhGMbu3bsNSUZERIRx7NixCz7/W2+9ZUgy/vjjjwJjJk6caJjNZmPJkiU+4x988IEhyVi2bJlhGIbx22+/GWaz2RgxYoSRk5PjE5s3344dO2bYbDajf//+PjHvvvuuIcn47LPPvGPx8fGGJOOLL77wjmVmZho1a9Y0rrnmGu/Y22+/bUgyvv32W++Y0+k0mjZtakgyFixYcN734OmnnzYkGampqeeNa9WqlREfH1/g/k8//dQIDQ01XC6XYRhFmxfLly83JBnffPPNeeMmT55c4GvKm0uzZ8/225eX09kGDBhgNG7c2Lud97UZMmSI9+tlGIbx1FNPGZKMm2++2TtW2Pn4ww8/GJKMF1980Sdu5MiRhslkMnbu3Okdi4+PN1q1apXv6xoyZIjf+KU693x29vOd/VrzzjedOnUysrKyvOOvvfaaIcmYNm3aeZ8nv/f+P//5jyHJWLx4sXcs73x37nl3xIgRRpUqVbzb69evNyQZ9913n0/c9ddfX+BrOtuqVasMScb48eN9xrOysozq1asbrVu3NtLT073jP/30kyHJeOaZZ8573MLMzbNf77Fjx4zg4GDjr3/9q3essPOqIOf7Hjj36/rggw8aJpPJWLdunXfsxIkTRuXKlf1+rhU2//O9B/k592dcYc7HBZFkSDJWr17tHdu7d68REhJijBgxwjt2++23G7Vq1TKOHz/u8/hrr73WiIyM9M7XguaJYRjGkCFDfH5W5insz4q8fM1ms7Fly5Yiv1YAqEi4jAsoRxITE1WtWjXVq1dPI0eOlMPh0PTp01W3bl1J0smTJzV//nyNGjVKqampOn78uI4fP64TJ05owIAB+u2337xL7r/77ju1a9fOu9LnbHmfJlssFm8vF4/Ho5MnTyo7O1udO3fW2rVri+11paamKjw8/LwxeftTU1OLdOx58+bp9OnTuu6667zvx/Hjx2WxWNStW7d8L0krTCPoyZMnKzIyUv369fM5bqdOnRQWFuY9bt6n3T/99JPcbneRcpek2rVr+3yN8i4RWbdunY4cOeLNJS4uTpUqVfLJJTExUTk5OX5L9a+55ppCrYDIy33atGkFXiYxefJktWzZUi1atPB57rz+Mnnvww8//CCPx6NnnnnG79KnvPmWlJSkrKwsPfzwwz4xd955pyIiIjRjxgyfx4WFhenGG2/0bttsNnXt2lW///67d2zmzJmqVauWRo4c6R2z2+266667Lvj6pdzbnwcFBXk/nb5YM2fOVJ8+fbw9cooyL/JW7uVdXnmxGjVqpAEDBviNn923JyUlRcePH1d8fLx+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eKzzvZaC9hX2ZwUAoPDo2QOUY71791bXrl319ttvKyMjQ9WrV1fv3r314Ycf5vtHyR9//OH9/2uuuUYbNmzQ1KlT/eLyPo3M+6Tw7E8nf/75Z61YsaLIuUZHRysxMdH77+zeAXfffbdq1qypxx57zK/HQUZGhvf2rmd/optXxDm7T4PT6fRZPSRJAwYMUEREhF5++eV8e6Oc/Z4UxahRo5STk6MXXnjBb192drb3D8VTp075fbqbV+wozO2/Dx065PM1OnPmjL744gu1b9/eu1Jp1KhRWrFihebMmeP3+NOnTys7O7uwL8vHyZMn/cbOzX3UqFE6ePCgPv74Y7/Y9PR0OZ1OSbkr0cxms55//nm/FQt5709iYqJsNpv+9a9/+bxnn376qVJSUgp1R6FzDR48WIcOHdKUKVO8Yy6Xq8DLFM6VdynH6tWri/zceWbOnOmXe1HmxZo1axQZGem9K1FBHA6HJPkVKc4nv+/xlJQUjR8/3icuMTFRVqtV//73v31i87sDUmHn4+DBg5WTk6N3333XJ+att96SyWTy3lGtOHTq1Mnn/HOhXiBNmjTx6wHz0UcfFbiy56OPPvI5v4wbN07Z2dnnfQ35vfdS/u9pYeU937/+9a+LOmZBc6hz586qXr26PvjgA5/5OWvWLG3btu2C35sXMzfPVVLnufwMGDBAK1as0Pr1671jJ0+eLHAlZ2Fc6ntQmPPx+axYscKn587+/fs1bdo09e/fXxaLRRaLRddcc42+++67fD8IOvtn5flei8PhyPcSxML+rAAAFB4re4By7rHHHtOf/vQnTZgwQffcc4/ee+89xcbGqk2bNrrzzjvVuHFjHT16VCtWrNCBAwe0YcMG7+OmTJmiP/3pT7rtttvUqVMnnTx5UtOnT9cHH3ygdu3a6corr9T333+vESNGaMiQIdq9e7c++OADRUdHKy0trdheQ6VKlTRlyhQNHjxYHTt21B133KHo6GgdOXJEEyZM0O+//653331X3bp18z6mf//+ql+/vm6//XY99thjslgs+uyzz1StWjXt27fPGxcREaFx48bppptuUseOHXXttdd6Y2bMmKGePXv6/bFZGPHx8br77rs1duxYrV+/Xv3795fVatVvv/2myZMn65133tHIkSP1+eef6/3339eIESPUpEkTpaam6uOPP1ZERMR5P/XPc8UVV+j222/XqlWrVKNGDX322Wc6evSozx/jjz32mKZPn64rr7zSe7tfp9OpTZs2acqUKdqzZ89FXQL0/PPPa/HixRoyZIgaNGigY8eO6f3331fdunUVGxsrSbrpppv07bff6p577tGCBQvUs2dP5eTk6Ndff9W3336rOXPmqHPnzmratKn+/ve/64UXXlBcXJyuvvpqBQcHa9WqVapdu7bGjh2ratWq6cknn9SYMWM0cOBADRs2TNu3b9f777+vLl265Lvq60LuvPNOvfvuuxo9erTWrFmjWrVqaeLEibLb7YV6fOPGjdW6dWslJSXptttu89m3ePFib0Hgjz/+kNPp1Isvvigp93bTvXr10u7du7Vt2zaNGzfO57FFmRfz5s3T0KFDL/hpePv27WWxWPTqq68qJSVFwcHB6tu373n7XPXv3182m01Dhw7V3XffrbS0NH388ceqXr26T8G4WrVqevTRRzV27FhdeeWVGjx4sNatW6dZs2b5za3CzsehQ4eqT58++vvf/649e/aoXbt2mjt3rqZNm6aHH37Yr+9Mabrjjjt0zz336JprrlG/fv20YcMGzZkzp8Dvo6ysLCUkJGjUqFHeORsbG6thw4YV+BwRERHq1auXXnvtNbndbtWpU0dz5871ruS6GO3bt9d1112n999/XykpKerRo4eSk5MLvSKlSZMmioqK0gcffKDw8HA5HA5169ZNjRo10quvvqpbb71V8fHxuu6667y3Xm/YsKEeeeSRC+ZV1Ll5rpI6z+Xn8ccf15dffql+/frpwQcf9N56vX79+jp58uRFrUy51PegMOfj82ndurUGDBjgc+t1SRozZow35pVXXtGCBQvUrVs33XnnnYqOjtbJkye1du1aJSUleQtO55snnTp10jfffKO//OUv6tKli8LCwjR06NBC/6wAABRB6d78C0BJyLu9b363ac7JyTGaNGliNGnSxMjOzjYMwzB27dpljB492qhZs6ZhtVqNOnXqGFdeeaUxZcoUn8eeOHHCeOCBB4w6deoYNpvNqFu3rnHzzTd7b7vq8XiMl19+2WjQoIERHBxsdOjQwfjpp5/8bkNuGJd26/U8e/bsMe666y6jfv36RlBQkPd2sUlJSfnGr1mzxujWrZths9mM+vXrG2+++WaBz7tgwQJjwIABRmRkpBESEmI0adLEuOWWW3xuRXvzzTcbDocj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JZ8x19KlAcoGAC5fRS72rF27VnH/rbhPmTJFNWrU0N69e/XFF1/oX//6V7EnCAAAAKBiMJnNsp/TqDn955/lycwMUEYAcHkqcrHH5XIpPDxckjR37lxdffXVMpvN6t69u/bu3VvsCQIAAACoOOw9e0omk3fbyMhQxurVAcwIAC4/RS72NG3aVD/88IP279+vOXPmqH///pKkY8eOKSIiotgTBAAAAFBxWCpXljU62mfMtWRJgLIBgMtTkYs9zzzzjB599FE1bNhQ3bp1U0xMjKTcVT4dOnQo9gQBAAAAVCwhPXr4bLt375b74MEAZQMAl58iF3tGjhypffv2afXq1Zo9e7Z3PCEhQW+99VaxJgcAAACg4rG1bq1Mm81njNU9AFB4hS721K9fXw888IDmzp2rqlWrqkOHDjKb//fwrl27qkWLFiWSJAAAAICKw2Sx6EjNmj5j6T//LCMrK0AZAcDlpdDFnokTJyo4OFj333+/qlatqj//+c/66quvdPr06RJMDwAAAEBFdLhWLZ9tw+VS+tq1AcoGAC4vhS72xMfH65///Kd+++03LVu2TO3bt9e///1v1axZU3379tXbb7+t33//vSRzBQAAAFBBZISGynrOlQPpXMoFAIVS5J49ktSqVSs9+eSTWrlypfbs2aPrrrtOycnJat26tVq3bq0ZM2YUd54AAAAAKpiQnj19trN27pT78OEAZQMAl4+LKvacrWbNmrrzzjv1448/6vjx43rhhRcUHBxcHLkBAAAAqMBsbdrIHB7uM5a+dGmAsgGAy8clF3vyZGdn6/jx4xoxYoQSExOL67AAAAAAKihTUJBCY2J8xlwrVshwuwOUEQBcHoqt2LNlyxY1atSouA4HAAAAALLHxvpsG06nMtatC1A2AHB5KLZiDwAAAAAUt6AaNWRr3txnzMWlXABwXkGFDezYseN596enp19yMgAAAABwLntsrLK2b/duZ23fruyjRxVUo0YAswKAsqvQxZ6tW7fq2muvLfBSrcOHD2vHjh3FlhgAAAAASFJIhw4yORwynE7vmGvpUkVcc00AswKAsqvQxZ7WrVurW7duuvfee/Pdv379en388cfFlhgAAAAASJLJapW9e3c5k5O9Y+krVij8qqtkCir0nzQAUGEUumdPz549tf2spZPnCg8PV69evYolKQAAAAA4W2hcnM+2JzVV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00036bXXXtORI0f09NNP6/7778935Q4AAACA8slkMskeG6sz5zRqzklNlSU8PICZAUDpK3KxZ8yYMXr++efVuXNn1apV65JW9Bw7dkyjR4/W4cOHFRkZqbZt22rOnDnq16+fJOmtt96S2WzWNddco8zMTA0YMEDvv/++9/EWi0U//fST7r33XsXExMjhcOjmm2/W888/f9E5AQAAALg8hXbvrjPffy9lZ+cOZGcrfeVKhf337wsAqCiKXOz54IMPNGHCBN10002X/OSffvrpefeHhITovffe03vvvVdgTIMGDTRz5sxLzgUAAADA5c3scCikY0dlnNXX07VkiRwX2V8UAC5XRe7Zk5WVpR49epRELgAAAABwSexxcT7bOUePKuu33wKUDQAERpGLPXfccYcmTZpUErkAAAAAwCWxNWsmS40aPmPpS5cGKBsACIwiX8aVkZGhjz76SElJSWrbtq3f7eLefPPNYksOAAAAAIrCZDLJHhen1ClTvGPpa9Yo4s9/ltnhCGBmAFB6ilzs2bhxo9q3by9J2rx5s88+roMFAAAAEGih3bsrdepUKScndyA7W+k//yxH376BTQwASkmRiz0LFiwoiTwAAAAAoFhYwsMV0qGDMlav9o65liyRvU8fPqAGUCEUuWfP2Q4cOKADBw4UVy4AAAAAUCzssbE+29mHDsn9++8BygYASleRiz0ej0fPP/+8IiMj1aBBAzVo0EBRUVF64YUX5PF4SiJHAAAAACgSW/PmslSr5jPmWrIkQNkAQOkqcrHn73//u95991298sorWrdundatW6eXX35Z//73v/WPf/yjJHIEAAAAgCIxmc1+q3vSV6+WJz09QBkBQOkpcs+ezz//XJ988omGDRvmHWvbtq3q1Kmj++67Ty+99FKxJggAAAAAFyM0Jkap06ZJeVcguN25jZp79w5oXgBQ0oq8sufkyZNq0aKF33iLFi108uTJYkkKAAAAAC6VJTJSIe3a+Yy5liyRYRgByggASkeRiz3t2rXTu+++6zf+7rvvqt05J1IAAAAACCR7XJzPdvaBA3Lv3RugbACgdBT5Mq7XXntNQ4YMUVJSkmJiYiRJK1as0P79+zVz5sxiTxAAAAAALpatZUtZqlRRzokT3jHXkiWyNWwYuKQAoIQVeWVPfHy8tm/frhEjRuj06dM6ffq0rr76am3fvl1x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G6WlpSktLU3169cvMJdffvlFffv21dixY31ymDhxol577TWdOnVKnTt31oMPPujzuC+//FL/+c9/9Mcff8jhcOgf//jHRb0Xx44d07Zt29S2bdt8999888167LHHlJqaqt9//1033XSTz/5Zs2Zp3bp12rp1q5KTk/XVV19dVB55ilzs6dy5s1588UVNnDhRixYt0pAhQyRJu3fvVo0aNS4pGQAAAAAobdZatWRt2tRnjEu5gPP7448/9N133+m9995TVFSUHA6Hnn/+eX3zzTfKycnxiY2Li1OHDh1ksVjUuHFj3X333Vq4cKEkyWKxyDAMbdmyRenp6apRo0aBBZOCzJ49W8OHD9cXX3yhUaNG+ey78cYb1a5dOwUFBenmm2/WmjVrfPbfd999atSokUJCQnTDDTf47S+MrKwsXXvttRo1apQ6d+6cb4zVatXOnTu9RaUePXr47H/mmWcUHh6u2rVra+DAgReVx9mKXOx5++23tXbtWj3wwAP6+9//rqb/PSlOmTLFL1kAAAAAuBzYz1ndk7V1q7K5cgEo0J49e+TxeNSoUSNFRUUpKipKXbp0kdls1pFzegetWrVKiYmJqlGjhiIiIvTUU095rwxq0qSJPv/8c7377ruqUaOG+vfvr/Xr1xcpl7ffflt9+vRR3759/fbVrFnT+/8Oh0NpaWnn3Z+amiop965fYWFhCgsL06BBgwp87qysLI0cOVJ2u/28dy2fOnWqNm/erObNm6tDhw769ttvC5XHxSryRaht27b1uRtXntdff10Wi+WSkgEAAACAQAjt2FFnvvlGhsvlHUtfulThw4cHLilUeGaHQ9UL0XPH898Chictza9HT+VHH5X5vz1v8v5bmOe9kHr16slsNuvQoUOy2+0++/bs2eOzfd111+nWW2/VtGnT5HA49Pbbb2vChAne/aNGjdKoUaOUnp6uZ555RjfddJM2bdoks7lw61MmTZqkRx99VA8++GC+PYMuxlNPPaWnnnrqvDFZWVn605/+pKysLE2bNk02m63A2I4dO+q7776Tx+PRDz/8oFGjRik+Pr5Ycs1PkVf2FCQkJOSSmgcBAAAAQKCYbDaFduvmM+ZavlzGOZejAKXJZDbLEh5+wX/WWrVkrVVLQWetDskTVLOmd39hjmUJD5epEEWWmjVravjw4XrggQe8q3SOHDmiqVOn+sWe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c2QEAAAAgIjn6dNHDq/31IBP5QLQTBpc9tSlZ8+eeuqpp2rd9QMAAAAA+I7D5ZJ34EDTrCIvz5owAGytScoe6buHNh88eLCp3g4AAAAAbMebkWE6DvxrKxcANKUGP7Pn3XffNR0bhqFDhw7pxRdf1NChQ5ssGAAAAADYjad3bzni4mRUVIRmvvx8JYwebWEqAHbT4LJnwoQJpmOHw6FOnTpp1KhR+vWvf91UuQAAAADAdhyxsfIOHKiKtWtDswrKHgBNrMFlTzAYbI4cAAAAABAVvBkZprInsGePqr/9Vs727S1MBcBOGv3MniNHjqi4uLgpswAAAACA7Xl69ZIjPt40q8jPtygNADtqUNlz/PhxZWdnq2PHjurcubPatWun5ORkPfjggyovL2+ujAAAAABgG47YWHkvvdQ081H2AGhC9d7G9e233yozM1MHDhzQddddp969e0uStm3bpt/97nfKyclRbm6uNm3apHXr1umuu+5qttAAAAAAEMni0tNVsWZN6Diwd6+qjhxRbMeOFqYCYBf1LnueeOIJud1u7d69W507d671WlZWliZNmqTly5frhRdeaPKgAAAAAGAX7l695EhIkFFWFpr51q9Xq6wsC1MBsIt6b+N655139Oyzz9YqeiQpOTlZzzzzjP7+979r6tSpuuGGG5o0JAAAAADYicPpZCsXgGZT77Ln0KFD6tu372lfT0tLU0xMjGbMmNEkwQAAAADAzuLS003HgX37VHXkiEVpANhJvcuejh07at++fad9fe/evUpKSmqKTAAAAABge+5LLpEjIcE04+4eAE2h3mXP2LFj9fDDD6uysrLWa36/X4888ojGjRvXpOEAAAAAwK4cTqfiBg0yzXx5eRalAWAnDXpAc0ZGhnr27Kns7Gz16tVLhmFo+/bt+v3vfy+/368///nPzZkVAAAAAGzFm56u8k8+CR0HCgtV9c9/KrZTJwtTAYh09S57unbtqrVr1+qOO+7Qgw8+KMMwJEkOh0NjxozRiy++qPPPP7/ZggIAAACA3bgvvlgxrVopWFoamvny89WKXRMAzkG9yx5J6tatmz744AMdO3ZMX331lSSpR48eat++fbOEAwAAAAA7czid8g4apPLVq0Ozirw8yh4A56RBZc9J7dq10w9+8IOmzgIAAAAAUcebnm4qe6r271fV4cOK7dzZwlQAIlm9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 \ No newline at end of file +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BAwe0fv16b8OyKvMiNjZWr7zyijZt2lThCqJhw4bpvvvu09/+9jc9+uijuvDCCyXJ+1/p5KEq1157rW6//Xbdeuut6t69u6STh6P16tVLEyZMUFBQkL744gvddddd8ng8uvvuu723f/zxx/XMM89o3LhxGjdunNatW6dRo0apuLjYJ0tl56NhGJowYYLS0tJ08803q2/fvkpOTtaDDz6oX375Ra+88oqioqI0e/ZsPfvss8rLy9Pzzz/vfV6zZ8/W/fffr7Zt2+r3v/+9JCkqKupcvjzn7Z577lFkZKSefPJJ75z9+eefvU2piixbtkw//fSTbrrpJrVs2VKbNm3SO++8o02bNmnt2rV+t50yZYqio6P1/PPPa926dZo5c6aaN2+uF154wVtzyy236KOPPtKvf/1rDR48WKmpqZU6dPDCCy/UU089pccff1y33Xab98OEwYMHS5L3ve6SSy7R888/r4MHD+q1117T6tWrtX79+nJXXkmVm5s//vijJk+erJtvvlk33HCD3n//fd14442KjY31roSr6vtceSr6HjjdL7/84m3KPPLII3I6nZo5c2aFK4DOlr8yr8HZVOb9+ExWrlypuXPn6r777pPdbtebb76pMWPG6Ouvv/a+rxw8eFCDBg3yNluioqK0ZMkS3XzzzTpx4oR++9vfnnGetGnTRsePH9fevXu9h1yGhoZKqtrPCunkIZoff/yx7rnnHjVr1qxOHv4HAAFnAKj3PvjgA0OSsXz5cuPQoUPGnj17jPnz5xtRUVGG3W439uzZ461NSkoyYmJijMLCQu+Yx+MxBg8ebHTt2tU79vjjjxuSjE8//dTv8Twej2EYhlFSUmIUFRX57Dt27JjRokULY9q0aT7jkownnnjCL/POnTvP+vwiIyONiy666Iw19913nyHJ2Lhxo2EYhvHEE08Y5b3Fnf64ubm5RmRkpHHrrbf61B04cMCIiIjwGb/hhhsMScbDDz/sd7833HCD0aFDB+/2V199ZUgy/vnPf/rUffnllz7jn332mSHJyMzMPOPzK0+HDh0MScYnn3ziHTt+/LjRqlUr4+KLL/aOPf3004bT6TR++OEHn9s//PDDhsViMXbv3m0YhmHs3LnTkGSEh4cb2dnZZ338V155xZBkHDp0qMKa2bNnG2az2fjqq698xt966y1DkrF69WrDMAxj+/bthtl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hhx/qzTff1JVXXqnOnTsrNzdX7777rsLDw8/4qX+Zbt266eabb1ZmZqZatGih999/XwcPHvT5Y/zBBx/UwoULdfnll3sv9+tyufTdd99p/vz52rVr1zkdAvTUU09p1apVuuyyy9ShQwdlZ2frzTffVNu2bTVkyBBJ0m9+8xt9/PHHuuOOO5SWlqZLL71UpaWl2rp1qz7++GMlJyerf//+6tKli/74xz/q6aef1tChQ3XVVVfJbrcrMzNTrVu31vPPP6+oqCg98sgjmj59usaMGaMJEyZo27ZtevPNN3XJJZeUu+rrbG699Va9/vrruv766/Xtt9+qVatWmj17thwOR6Vu36lTJ/Xu3VvLly/XtGnTfPatWrXK2xA4dOiQXC6XnnnmGUknLzc9bNgw7dy5U1u2bNGMGTN8bluVebFs2TKNHz/+rJ+G9+3bVxaLRS+88IKOHz8uu92uxMTEM57natSoUbLZbBo/frxuv/125eXl6d1331Xz5s19GsZRUVF64IEH9Pzzz+vyyy/XuHHjtH79ei1ZssRvblV2Po4fP14JCQn64x//qF27dumiiy7S0qVLtWDBAv32t7/1O+9Mbbrlllt0xx13aNKkSRo5cqSysrKUnJxc4fdRcXGxkpKSNGXKFO+cHTJkiCZMmFDhY4SHh2vYsGF68cUX5Xa71aZNGy1dutS7kutc9O3bV9dee63efPNNHT9+XIMHD1ZKSkqlV6R07txZkZGReuuttxQWFian06mBAwcqOjpaL7zwgm666SbFx8fr2muv9V56vWPHjrr//vvPmquqc/N0NfU+V56HHnpIH330kUaOHKl7773Xe+n19u3b6+jRo+e0MuV8X4PKvB+fSe/evTV69GifS69L0vTp0701f/7zn5WWlqaBAwfq1ltvVc+ePXX06FGtW7dOy5cv9zaczjRPYmNjNXfuXP3ud7/TJZdcotDQUI0fP77SPysAAFVQuxf/AlATyi7vW95lmktLS43OnTsbnTt3NkpKSgzDMIwdO3YY119/vdGyZUvDarUabdq0MS6//HJj/vz5Prc9cuSIcc899xht2rQxbDab0bZtW+OGG27wXnbV4/EYzz33nNGhQwfDbrcbF198sfHvf//b7zLkhnF+l14vs2vXLuO2224z2rdvbwQFBXkvF7t8+fJy67/99ltj4MCBhs1mM9q3b2+8/PL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r109ffvllTecFAAAAgEpzjhzps23k56tg9eoApQGA2lGplT2n+u1vf6u33npLQ4YM8Y6NHj1aDodDt912m7Zs2VKtAQEAAADgXFlbt5a9Tx8VbdzoHXMtXy7H8OEyWSwBTAYANafKJ2jesWOHIiMj/cYjIiK0a9euaogEAAAAANUndPRon+3So0dV+M03AUoDADWvys2eSy65RL/73e908OBB79jBgwf14IMPasCAAdUaDgAAAADOl7VzZ1k7dfIZy1u61Oc8pADQkFS52fP+++9r//79at++vbp06aIuXbqoffv2+uWXX/Tee+9V6b5mzJihPn36KDw8XOHh4YqLi9OSJUu8+wsLC3X33XeradOmCg0N1aRJk3yaTJK0e/duXXbZZXI4HGrevLkefPBBlZSUVPVpAQAAAGigTCaT3+qekr17Vbx5c4ASAUDNqvI5e7p06aKNGzdq2bJl2rp1qyTpwgsv1IgRI3yuylUZbdu21Z///Gd17dpVhmHoww8/1BVXXKH169erV69euv/++7Vo0SLNmzdPERERuueee3TVVVdp9X9PqFZaWqrLLrtMLVu21Jo1a7R//35df/31slqteu6556r61AAAAAA0UPY+fWRp0UKlp3x4nJecLHuvXgFMBQA1o8rNHulkZ3zUqFEaNWrUeT34+PHjfbafffZZzZgxQ2vXrlXbtm313nvvac6cOUpMTJQkffDBB7rwwgu1du1aDRo0SEuXLtXmzZu1fPlytWjRQn379tXTTz+tP/zhD3ryySdls9nOKx8AAACAhsFkNit01Cgdnz3bO1a8bZuKd+2SrWPHwAUDgBpwTs2elJQUpaSkKDs7Wx6Px2ff+++/f05BSktLNW/ePLlcLsXFxenbb7+V2+3WiBEjvDU9evRQ+/btlZGRoUGDBikjI0MxMTFq0aKFt2b06NG68847tWnTJl188cXlPlZRUZGKioq82ydOnJAkud1uud3uc8oP1HVlc5s5joaMeY7GgHmOxqCm5nlQv34yLVgg47+//0tSbnKywqdNq9bHASqD93HUpCo3e6ZPn66nnnpK/fv3V6tWrap86NbpvvvuO8XFxamwsFChoaH67LPP1LNnT23YsEE2m83vyl8tWrTQgQMHJEkHDhzwafSU7S/bV5Hnn39e06dP9xtftGiRHA7HeT0foK5bsGBBoCMANY55jsa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iY2N1xx13yO12K/S/V77bvHmz3n//fW3YsEGff/653+P88MMPGjt2rO6//37dc889Gj58uOLi4rRu3TqtWbNGXbt21Ycffug9DU3Hjh1111136dNPP9WmTZvUr18/ffTRR2rXrt1Zn3unTp30wClfm/Hjx6t79+5au3atevbs6Ve/bNky/f73v9fOnTvlcDh01VVXacaMGd79X3zxhaZPn67Dhw9r4sSJevfdd2W1Ws+aoyJVXtljGIY8/+3yLV++XOPGjZMktWvXTocPHz7nIAAAAABQl5lMJr/VPUBjNm3aNB09elQbN27Uzp075Xa7dc899/jVhYSE6N1339XRo0e1evVqpaWl6eWXX5Z0skHzpz/9SUuXLlVubq7+85//aMCAAbr44ov11ltvKSYmRnl5ecrLy1P79u0rzPL1118rMTFRzz//vE+G2bNn68UXX9SxY8fUv39/3XvvvT63++ijj/T//t//06FDh+R0OvXYY4+d02uRnZ2tLVu2qE+fPuXuv+GGG/Tggw8qNzdXP/30k37zm9/47F+yZInWr1+vzZs3KyUlRf/85z/PKUeZKjd7+vfvr2eeeUazZ8/WypUrddlll0mSdu7cqRYtWpxXGAAAAACoy2xdush8wQXl7vOcchgM0NAdOnRIn3zyid544w1FRkbK6XTqqaee0ty5c1V62rmshg4dqosvvlgWi0WdOnXS7bffrhUrVkiSLBaLDMPQpk2bVFBQoBYtWlTYMKnIl19+qYkTJ+of//iHpkyZ4rPvuuuu00UXXaSgoCDdcMMN+vbbb33233XXXYqOjlZwcLCmTp3qt78yiouLdc0112jKlCnq379/uTVWq1U//vijt6k0ePBgn/2PP/64wsLC1Lp1a40ZM+accpyqys2eV199VevWrdM999yjP/7xj+rSpYskaf78+X5hAQAAAKAhyX7oIXmOHi133+Hp05X9wAPnfdgNUB/s2rVLHo9H0dHRioyMVGRkpC655BKZzWYdOO3cQZmZmRoxYoRatGih8PBwPfroo94jgzp37qwPP/xQr7/+ulq0aKFRo0ZV+epar776qhISEpSYmOi3r2XLlt7/dzqdysvLO+P+3P82a5977jmFhoYqNDRUY8eOrfCxi4uLNXnyZDkcDr3730M6y/PZZ5/p+++/V/fu3XXxxRfr448/rlSOc1Xlc/b06dP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55593cHKg+Vq6zo/avXu37rjjDl100UUdlBRovZau80AgoLFjx2r37t169dVXVVJSot/97nfq06dPBycHmq+l63zJkiW66667NGfOHBUXF+v555/Xyy+/rHvuuaeDkwPNV1NTo7POOksLFy5s1vG7du3SpEmTdMkll2jz5s366U9/qptvvll//vOf2zkpnMrxr14///zzdd555+nJJ5+UJIXDYWVlZenHP/6x7rrrrkbHf/e731VNTY1WrFgRmY0aNUojR47UM88802G5gZZo6TpvKBQKqUuXLnryySd1ww03tHdcoFVas85DoZBGjx6tH/zgB/rwww916NChZv3LGmCXlq7zZ555Rv/3f/+nrVu3yu12d3RcoFVaus5nzJih4uJivfvuu5HZz372M/3lL39RQUFBh+UGWsswDC1btuyEVxjPnj1bb7/9tuUig+9973s6dOiQVq1a1QEp4TSOvrInEAho06ZNuvzyyyOzhIQEXX755dqwYUOT37NhwwbL8ZI0fvz44x4P2K0167yh2tpaBYNBde3atb1iAqektev84YcfVkZGhm666aaOiAmcktas8zfffFO5ubnKy8tTZmamRowYoXnz5ikUCnVUbKBFWrPOv/GNb2jTpk2RW7127typlStXauLEiR2SGegI/B6KtpZod4D2dODAAYVCIWVmZlrmmZmZ2rp1a5PfU15e3uTx5eXl7ZYTOBWtWecNzZ49W7179270FwwQLVqzzgsKCvT8889r8+bNHZAQOHWtWec7d+7U2rVrdd1112nlypXasWOHfvSjHykYDGrOnDkdERtokdas82uvvVYHDhzQhRdeKNM0VV9fr1tvvZXbuOAox/s9tKqqSkeOHFFycrJNyRCrHH1lD4CTe/TRR7V06VItW7ZMSUlJdscB2kR1dbWmTZum3/3ud+revbvdcYB2Ew6HlZGRod/+9rc699xz9d3vflf33nsvt57DUd5//33NmzdPTz31lD7++GO9/vrrevvttzV37ly7owFA1HL0lT3du3eXy+VSRUWFZV5RUaGePXs2+T09e/Zs0fGA3Vqzzo96/PHH9eijj2rNmjU688wz2zMmcEpaus5LS0u1e/duXXnllZFZOByWJCUmJqqkpEQDBw5s39BAC7Xmz/NevXrJ7XbL5XJFZtnZ2SovL1cgEJDH42nXzEBLtWad33///Zo2bZpuvvlmSdIZZ5yhmpoa3XLLLbr33nuVkMC/XyP2He/30LS0NK7qQas4+k9Gj8ejc8891/Iwt3A4rHfffVe5ublNfk9ubq7leEnKz88/7vGA3VqzziVpwYIFmjt3rlatWqWvfe1rHREVaLWWrvNhw4bp008/1ebNmyNfV111VeQNF1lZWR0ZH2iW1vx5fsEFF2jHjh2RMlOStm3bpl69elH0ICq1Zp3X1tY2KnSOFpwOf9cM4gi/h6LNmQ63dOlS0+v1mosXLzaLiorMW265xezcubNZXl5umqZpTps2zbzrrrsix3/00UdmYmKi+fjjj5vFxcXmnDlzTLfbbX766ad2nQJwUi1d548++qjp8XjMV1991dy3b1/kq7q62q5TAE6qpeu8oenTp5uTJ0/uoLRA67R0nZeVlZk+n8+cMWOGWVJSYq5YscLMyMgw//d//9euUwBOqqXrfM6cOabP5zNfeuklc+fOnebq1avNgQMHmldffbVdpwCcVHV1tfnJJ5+Yn3zyiSnJ/MUvfmF+8skn5j//+U/TNE3zrrvuMqdNmxY5fufOnWZKSop55513msXFxebChQtNl8tlrlq1yq5TQIxz9G1c0pevUv/3v/+tBx54QOXl5Ro5cqRWrVoVefhVWVmZ5V8KvvGNb2jJkiW67777dM8992jw4MF64403NGLECLtOATiplq7zp59+WoFAQN/5zncsnzNnzhw9+OCDHRkdaLaWrnMgFrV0nWdlZenPf/6zZs6cqTPPPFN9+vTRT37yE82ePduuUwBOqqXr/L777pNhGLrvvvv0+eefq0ePHrryyiv1yCOP2HUKwEn9/e9/1yWXXBLZnjVrliRp+vTpWrx4sfbt26eysrLI/gEDBujtt9/WzJkz9atf/Up9+/bVc889p/Hjx3d4djiDYZpc+wgAAAAAAOAU/BMoAAAAAACAg1D2AAAAAAAAOAhlDwAAAAAAgINQ9gAAAAAAADgIZQ8AAAAAAICDUPYAAAAAAAA4CGUPAAAAAACAg1D2AAAAAAAAOAhlDwAA6HCGYeiNN96QJO3evVuGYWjz5s22ZgIAAHAKyh4AAOLM97//fRmGIcMw5Ha7NWDAAP3P//yP6urq7I4GAACANpBodwAAANDxJkyYoEWLFikYDGrTpk2aPn26DMPQY489Znc0AAAAnCKu7AEAIA55vV717NlTWVlZmjJlii6//HLl5+dLksLhsObPn68BAwYoOTlZZ511ll599VXL9xcWFuqKK65QWlqafD6fLrroIpWWlkqS/va3v2ns2LHq3r270tPTNWbMGH388ccdfo4AAADxirIHAIA499lnn2n9+vXyeDySpPnz5+vFF1/UM888o8LCQs2cOVPXX3+91q1bJ0n6/PPPNXr0aHm9Xq1du1abNm3SD37wA9XX10uSqqurNX36dBUUFGjjxo0aPHiwJk6cqOrqatvOEQAAIJ5wGxcAAHFoxYoVSk1NVX19vfx+vxISEvTkk0/K7/dr3rx5WrNmjXJzcyVJp59+ugoKCvTss89qzJgxWrhwodLT07V06VK53W5J0pAhQyKffemll1p+1m9/+1t17txZ69at0xVXXNFxJwkAABCnKHsAAIhDl1xyiZ5++mnV1NToiSeeUGJioqZOnarCwkLV1tZq7NixluMDgYDOPvtsSdLmzZt10UUXRYqehioqKnTffffp/fff1/79+xUKhVRbW6uysrJ2Py8AAABQ9gAAEJc6deqkQYMGSZJ+//vf66yzztLzzz+vESNGSJLefvtt9enTx/I9Xq9XkpScnHzCz54+fboOHjyoX/3qVzrttNPk9XqVm5urQCDQDmcCAACAhih7AACIcwkJCbrnnns0a9Ysbdu2TV6vV2VlZRozZkyTx5955pl64YUXFAwGm7y656OPPtJTTz2liRMnSpL27NmjAwcOtOs5AAAA4Bge0AwAAPRf//VfcrlcevbZZ3XHHXdo5syZeuGFF1RaWqqPP/5Yv/nNb/TCCy9IkmbMmKGqqip973vf09///ndt375df/jDH1RSUiJJGjx4sP7whz+ouLhYf/nLX3Tddded9GogAAAAtB2u7AEAAEpMTNSMGTO0YMEC7dq1Sz169ND8+fO1c+dOde7cWeecc47uueceSVK3bt20du1a3XnnnRozZoxcLpdGjhypCy64QJL0/PPP65ZbbtE555yjrKwszZs3T3fccYedpwcAABBXDNM0TbtDAAAAAAAAoG1wGxcAAAAAAICDUPYAAAAAAAA4CGUPAAAAAACAg1D2AAAAAAAAOAhlDwAAAAAAgINQ9gAAAAAAADgIZQ8AAAAAAICDUPYAAAAAAAA4CGUPAAAAAACAg1D2AAAAAAAAOAhlDwAAAAAAgIP8P5lAarTkl/EnAAAAAElFTkSuQmCC \ No newline at end of file diff --git a/docs/pages/performance/fashion-mnist/plot.png b/docs/pages/performance/fashion-mnist/plot.png index 05cdbd250..baf59b338 100644 Binary files a/docs/pages/performance/fashion-mnist/plot.png and b/docs/pages/performance/fashion-mnist/plot.png differ diff --git a/docs/pages/performance/fashion-mnist/results.md b/docs/pages/performance/fashion-mnist/results.md index 64f5243aa..eea9736e5 100644 --- a/docs/pages/performance/fashion-mnist/results.md +++ b/docs/pages/performance/fashion-mnist/results.md @@ -1,10 +1,10 @@ |Model|Parameters|Recall|Queries per Second| |---|---|---|---| -|eknn-l2lsh|L=100 k=4 w=1024 candidates=500 probes=0|0.379|378.846| -|eknn-l2lsh|L=100 k=4 w=1024 candidates=1000 probes=0|0.447|310.273| -|eknn-l2lsh|L=100 k=4 w=1024 candidates=500 probes=3|0.635|290.668| -|eknn-l2lsh|L=100 k=4 w=1024 candidates=1000 probes=3|0.717|248.644| -|eknn-l2lsh|L=100 k=4 w=2048 candidates=500 probes=0|0.767|332.671| -|eknn-l2lsh|L=100 k=4 w=2048 candidates=1000 probes=0|0.847|278.984| -|eknn-l2lsh|L=100 k=4 w=2048 candidates=500 probes=3|0.922|219.114| -|eknn-l2lsh|L=100 k=4 w=2048 candidates=1000 probes=3|0.960|196.862| +|eknn-l2lsh|L=100 k=4 w=1024 candidates=500 probes=0|0.378|375.370| +|eknn-l2lsh|L=100 k=4 w=1024 candidates=1000 probes=0|0.447|320.039| +|eknn-l2lsh|L=100 k=4 w=1024 candidates=500 probes=3|0.635|294.600| +|eknn-l2lsh|L=100 k=4 w=1024 candidates=1000 probes=3|0.716|257.913| +|eknn-l2lsh|L=100 k=4 w=2048 candidates=500 probes=0|0.767|332.779| +|eknn-l2lsh|L=100 k=4 w=2048 candidates=1000 probes=0|0.846|289.472| +|eknn-l2lsh|L=100 k=4 w=2048 candidates=500 probes=3|0.921|220.716| +|eknn-l2lsh|L=100 k=4 w=2048 candidates=1000 probes=3|0.960|204.668| diff --git a/elastiknn-jmh-benchmarks/src/main/scala/com/klibisz/elastiknn/jmhbenchmarks/HitCounterBenchmarks.scala b/elastiknn-jmh-benchmarks/src/main/scala/com/klibisz/elastiknn/jmhbenchmarks/HitCounterBenchmarks.scala index 60e5b6eb2..eae02df29 100644 --- a/elastiknn-jmh-benchmarks/src/main/scala/com/klibisz/elastiknn/jmhbenchmarks/HitCounterBenchmarks.scala +++ b/elastiknn-jmh-benchmarks/src/main/scala/com/klibisz/elastiknn/jmhbenchmarks/HitCounterBenchmarks.scala @@ -1,7 +1,7 @@ package com.klibisz.elastiknn.jmhbenchmarks import org.openjdk.jmh.annotations._ -import org.apache.lucene.util.hppc.IntIntHashMap +import org.apache.lucene.internal.hppc.IntIntHashMap import org.eclipse.collections.impl.map.mutable.primitive.IntShortHashMap import scala.util.Random diff --git a/elastiknn-lucene/src/main/java/com/klibisz/elastiknn/search/ArrayHitCounter.java b/elastiknn-lucene/src/main/java/com/klibisz/elastiknn/search/ArrayHitCounter.java index f3355f7ee..827a80f74 100644 --- a/elastiknn-lucene/src/main/java/com/klibisz/elastiknn/search/ArrayHitCounter.java +++ b/elastiknn-lucene/src/main/java/com/klibisz/elastiknn/search/ArrayHitCounter.java @@ -1,11 +1,8 @@ package com.klibisz.elastiknn.search; -/** - * Use an array of counts to count hits. The index of the array is the doc id. - * Hopefully there's a way to do this that doesn't require O(num docs in segment) time and memory, - * but so far I haven't found anything on the JVM that's faster than simple arrays of primitives. - */ -public class ArrayHitCounter implements HitCounter { +import org.apache.lucene.search.DocIdSetIterator; + +public final class ArrayHitCounter implements HitCounter { private final short[] counts; private int numHits; @@ -44,38 +41,18 @@ public void increment(int key, short count) { if (after > maxValue) maxValue = after; } - @Override - public boolean isEmpty() { - return numHits == 0; - } - @Override public short get(int key) { return counts[key]; } - @Override - public int numHits() { - return numHits; - } - @Override public int capacity() { return counts.length; } - @Override - public int minKey() { - return minKey; - } - - @Override - public int maxKey() { - return maxKey; - } - @Override - public KthGreatestResult kthGreatest(int k) { + private KthGreatestResult kthGreatest(int k) { // Find the kth greatest document hit count in O(n) time and O(n) space. // Though the space is typically negligibly small in practice. // This implementation exploits the fact that we're specifically counting document hit counts. @@ -105,4 +82,70 @@ public KthGreatestResult kthGreatest(int k) { if (kthGreatest == 0) numGreater = numHits; return new KthGreatestResult(kthGreatest, numGreater, numHits); } -} + + @Override + public DocIdSetIterator docIdSetIterator(int candidates) { + if (numHits == 0) return DocIdSetIterator.empty(); + else { + + KthGreatestResult kgr = kthGreatest(candidates); + + // Return an iterator over the doc ids >= the min candidate count. + return new DocIdSetIterator() { + + // Important that this starts at -1. Need a boolean to denote that it has started iterating. + private int docID = -1; + private boolean started = false; + + // Track the number of ids emitted, and the number of ids with count = kgr.kthGreatest emitted. + private int numEmitted = 0; + private int numEq = 0; + + @Override + public int docID() { + return docID; + } + + @Override + public int nextDoc() { + + if (!started) { + started = true; + docID = minKey - 1; + } + + // Ensure that docs with count = kgr.kthGreatest are only emitted when there are fewer + // than `candidates` docs with count > kgr.kthGreatest. + while (true) { + if (numEmitted == candidates || docID + 1 > maxKey) { + docID = DocIdSetIterator.NO_MORE_DOCS; + return docID; + } else { + docID++; + if (counts[docID] > kgr.kthGreatest) { + numEmitted++; + return docID; + } else if (counts[docID] == kgr.kthGreatest && numEq < candidates - kgr.numGreaterThan) { + numEq++; + numEmitted++; + return docID; + } + } + } + } + + @Override + public int advance(int target) { + while (docID < target) nextDoc(); + return docID(); + } + + @Override + public long cost() { + return maxKey - minKey; + } + }; + } + } + +} \ No newline at end of file diff --git a/elastiknn-lucene/src/main/java/com/klibisz/elastiknn/search/EmptyHitCounter.java b/elastiknn-lucene/src/main/java/com/klibisz/elastiknn/search/EmptyHitCounter.java index efa3f081c..2786b89b4 100644 --- a/elastiknn-lucene/src/main/java/com/klibisz/elastiknn/search/EmptyHitCounter.java +++ b/elastiknn-lucene/src/main/java/com/klibisz/elastiknn/search/EmptyHitCounter.java @@ -1,5 +1,7 @@ package com.klibisz.elastiknn.search; +import org.apache.lucene.search.DocIdSetIterator; + public final class EmptyHitCounter implements HitCounter { @Override @@ -8,38 +10,18 @@ public void increment(int key) {} @Override public void increment(int key, short count) {} - @Override - public boolean isEmpty() { - return true; - } - @Override public short get(int key) { return 0; } - @Override - public int numHits() { - return 0; - } - @Override public int capacity() { return 0; } @Override - public int minKey() { - return 0; - } - - @Override - public int maxKey() { - return 0; - } - - @Override - public KthGreatestResult kthGreatest(int k) { - return new KthGreatestResult((short) 0, 0, 0); + public DocIdSetIterator docIdSetIterator(int k) { + return DocIdSetIterator.empty(); } } diff --git a/elastiknn-lucene/src/main/java/com/klibisz/elastiknn/search/HitCounter.java b/elastiknn-lucene/src/main/java/com/klibisz/elastiknn/search/HitCounter.java index c2b3aa38b..75f2eb1ce 100644 --- a/elastiknn-lucene/src/main/java/com/klibisz/elastiknn/search/HitCounter.java +++ b/elastiknn-lucene/src/main/java/com/klibisz/elastiknn/search/HitCounter.java @@ -1,5 +1,7 @@ package com.klibisz.elastiknn.search; +import org.apache.lucene.search.DocIdSetIterator; + /** * Abstraction for counting hits for a particular query. */ @@ -9,18 +11,11 @@ public interface HitCounter { void increment(int key, short count); - boolean isEmpty(); short get(int key); - int numHits(); - int capacity(); - int minKey(); - - int maxKey(); - - KthGreatestResult kthGreatest(int k); + DocIdSetIterator docIdSetIterator(int k); } diff --git a/elastiknn-lucene/src/main/java/org/apache/lucene/search/MatchHashesAndScoreQuery.java b/elastiknn-lucene/src/main/java/org/apache/lucene/search/MatchHashesAndScoreQuery.java index 448a1df9e..a6269b988 100644 --- a/elastiknn-lucene/src/main/java/org/apache/lucene/search/MatchHashesAndScoreQuery.java +++ b/elastiknn-lucene/src/main/java/org/apache/lucene/search/MatchHashesAndScoreQuery.java @@ -1,19 +1,16 @@ package org.apache.lucene.search; import com.klibisz.elastiknn.models.HashAndFreq; -import com.klibisz.elastiknn.search.ArrayHitCounter; -import com.klibisz.elastiknn.search.EmptyHitCounter; -import com.klibisz.elastiknn.search.HitCounter; -import com.klibisz.elastiknn.search.KthGreatestResult; +import com.klibisz.elastiknn.search.*; import org.apache.lucene.index.*; import org.apache.lucene.util.BytesRef; import java.io.IOException; import java.util.Arrays; import java.util.Objects; -import java.util.Set; import java.util.function.Function; +import static java.lang.Math.max; import static java.lang.Math.min; /** @@ -64,9 +61,8 @@ private HitCounter countHits(LeafReader reader) throws IOException { } else { TermsEnum termsEnum = terms.iterator(); PostingsEnum docs = null; + HitCounter counter = new ArrayHitCounter(reader.maxDoc()); - // TODO: Is this the right place to use the live docs bitset to check for deleted docs? - // Bits liveDocs = reader.getLiveDocs(); for (HashAndFreq hf : hashAndFrequencies) { // We take two different paths here, depending on the frequency of the current hash. // If the frequency is one, we avoid checking the frequency of matching docs when @@ -92,76 +88,6 @@ private HitCounter countHits(LeafReader reader) throws IOException { } } - private DocIdSetIterator buildDocIdSetIterator(HitCounter counter) { - // TODO: Add back this logging once log4j mess has settled. -// if (counter.numHits() < candidates) { -// logger.warn(String.format( -// "Found fewer approximate matches [%d] than the requested number of candidates [%d]", -// counter.numHits(), candidates)); -// } - if (counter.isEmpty()) return DocIdSetIterator.empty(); - else { - - KthGreatestResult kgr = counter.kthGreatest(candidates); - - // Return an iterator over the doc ids >= the min candidate count. - return new DocIdSetIterator() { - - // Important that this starts at -1. Need a boolean to denote that it has started iterating. - private int docID = -1; - private boolean started = false; - - // Track the number of ids emitted, and the number of ids with count = kgr.kthGreatest emitted. - private int numEmitted = 0; - private int numEq = 0; - - @Override - public int docID() { - return docID; - } - - @Override - public int nextDoc() { - - if (!started) { - started = true; - docID = counter.minKey() - 1; - } - - // Ensure that docs with count = kgr.kthGreatest are only emitted when there are fewer - // than `candidates` docs with count > kgr.kthGreatest. - while (true) { - if (numEmitted == candidates || docID + 1 > counter.maxKey()) { - docID = DocIdSetIterator.NO_MORE_DOCS; - return docID(); - } else { - docID++; - if (counter.get(docID) > kgr.kthGreatest) { - numEmitted++; - return docID(); - } else if (counter.get(docID) == kgr.kthGreatest && numEq < candidates - kgr.numGreaterThan) { - numEq++; - numEmitted++; - return docID(); - } - } - } - } - - @Override - public int advance(int target) { - while (docID < target) nextDoc(); - return docID(); - } - - @Override - public long cost() { - return counter.numHits(); - } - }; - } - } - @Override public Explanation explain(LeafReaderContext context, int doc) throws IOException { HitCounter counter = countHits(context.reader()); @@ -179,7 +105,7 @@ public Scorer scorer(LeafReaderContext context) throws IOException { ScoreFunction scoreFunction = scoreFunctionBuilder.apply(context); LeafReader reader = context.reader(); HitCounter counter = countHits(reader); - DocIdSetIterator disi = buildDocIdSetIterator(counter); + DocIdSetIterator disi = counter.docIdSetIterator(candidates); return new Scorer(this) { @Override diff --git a/elastiknn-lucene/src/test/scala/com/klibisz/elastiknn/search/ArrayHitCounterSpec.scala b/elastiknn-lucene/src/test/scala/com/klibisz/elastiknn/search/ArrayHitCounterSpec.scala index 2cf32ff6d..b7260ed16 100644 --- a/elastiknn-lucene/src/test/scala/com/klibisz/elastiknn/search/ArrayHitCounterSpec.scala +++ b/elastiknn-lucene/src/test/scala/com/klibisz/elastiknn/search/ArrayHitCounterSpec.scala @@ -1,74 +1,98 @@ package com.klibisz.elastiknn.search +import org.apache.lucene.search.DocIdSetIterator import org.scalatest.freespec.AnyFreeSpec import org.scalatest.matchers.should.Matchers +import scala.collection.mutable.ArrayBuffer import scala.util.Random final class ArrayHitCounterSpec extends AnyFreeSpec with Matchers { - final class Reference(referenceCapacity: Int) extends HitCounter { - private val counts = scala.collection.mutable.Map[Int, Short]( - (0 until referenceCapacity).map(_ -> 0.toShort): _* - ) + private final class ReferenceHitCounter(referenceCapacity: Int) extends HitCounter { + + private final class ArrayDocIdSetIterator(docIds: Array[Int]) extends DocIdSetIterator { + + private var currentDocIdIndex = -1; + + override def docID(): Int = if (currentDocIdIndex < docIds.length) docIds(currentDocIdIndex) else DocIdSetIterator.NO_MORE_DOCS + + override def nextDoc(): Int = { + currentDocIdIndex += 1 + docID() + } + + override def advance(target: Int): Int = { + while (docID() < target) { + val _ = nextDoc() + } + docID() + } + + override def cost(): Long = docIds.length + } + + private val counts = scala.collection.mutable.Map[Int, Short]().withDefaultValue(0) override def increment(key: Int): Unit = counts.update(key, (counts(key) + 1).toShort) override def increment(key: Int, count: Short): Unit = counts.update(key, (counts(key) + count).toShort) - override def isEmpty: Boolean = !counts.values.exists(_ > 0) - override def get(key: Int): Short = counts(key) - override def numHits(): Int = counts.values.count(_ > 0) - override def capacity(): Int = this.referenceCapacity - override def minKey(): Int = counts.filter(_._2 > 0).keys.min - - override def maxKey(): Int = counts.filter(_._2 > 0).keys.max + override def docIdSetIterator(k: Int): DocIdSetIterator = { + // A very naive/inefficient way to implement the DocIdSetIterator. + if (k == 0 || counts.isEmpty) DocIdSetIterator.empty() + else { + // This is a hack to replicate a bug in how we emit doc IDs. + // Basically if the kth greatest value is zero, we end up emitting docs that were never matched, + // so we need to fill the map with zeros to replicate the behavior here. + val minKey = counts.keys.min + val maxKey = counts.keys.max + (minKey to maxKey).foreach(k => counts.update(k, counts(k))) + + val valuesSorted = counts.values.toArray.sorted.reverse + val kthGreatest = valuesSorted.take(k).last + val greaterDocIds = counts.filter(_._2 > kthGreatest).keys.toArray + val equalDocIds = counts.filter(_._2 == kthGreatest).keys.toArray.sorted.take(k - greaterDocIds.length) + val selectedDocIds = (equalDocIds ++ greaterDocIds).sorted + new ArrayDocIdSetIterator(selectedDocIds) + } + } + } - override def kthGreatest(k: Int): KthGreatestResult = { - val values = counts.values.toArray.sorted.reverse - val numGreaterThan = values.count(_ > values(k)) - val numNonZero = values.count(_ != 0) - new KthGreatestResult(values(k), numGreaterThan, numNonZero) + private def consumeDocIdSetIterator(disi: DocIdSetIterator): List[Int] = { + val docIds = new ArrayBuffer[Int] + while (disi.nextDoc() != DocIdSetIterator.NO_MORE_DOCS) { + docIds.append(disi.docID()) } + docIds.toList } "reference examples" - { "example 1" in { - val c = new Reference(10) - c.isEmpty shouldBe true + val c = new ReferenceHitCounter(10) c.capacity() shouldBe 10 c.get(0) shouldBe 0 c.increment(0) c.get(0) shouldBe 1 - c.numHits() shouldBe 1 - c.minKey() shouldBe 0 - c.maxKey() shouldBe 0 - - c.get(5) shouldBe 0 - c.increment(5, 5) - c.get(5) shouldBe 5 - c.numHits() shouldBe 2 - c.minKey() shouldBe 0 - c.maxKey() shouldBe 5 - - c.get(9) shouldBe 0 - c.increment(9) - c.get(9) shouldBe 1 - c.increment(9) - c.get(9) shouldBe 2 - c.numHits() shouldBe 3 - c.minKey() shouldBe 0 - c.maxKey() shouldBe 9 - - val kgr = c.kthGreatest(2) - kgr.kthGreatest shouldBe 1 - kgr.numGreaterThan shouldBe 2 - kgr.numNonZero shouldBe 3 + + c.get(1) shouldBe 0 + c.increment(1, 5) + c.get(1) shouldBe 5 + + c.get(2) shouldBe 0 + c.increment(2) + c.get(2) shouldBe 1 + c.increment(2) + c.get(2) shouldBe 2 + + // The k=2 most frequent doc IDs are 1 and 2. + val docIds = consumeDocIdSetIterator(c.docIdSetIterator(2)) + docIds shouldBe List(1, 2) } } @@ -80,7 +104,7 @@ final class ArrayHitCounterSpec extends AnyFreeSpec with Matchers { info(s"Using seed $seed") for (_ <- 0 until 99) { val matches = (0 until numMatches).map(_ => rng.nextInt(numDocs)) - val ref = new Reference(numDocs) + val ref = new ReferenceHitCounter(numDocs) val ahc = new ArrayHitCounter(numDocs) matches.foreach { doc => ref.increment(doc) @@ -91,13 +115,24 @@ final class ArrayHitCounterSpec extends AnyFreeSpec with Matchers { ahc.increment(doc, count) ahc.get(doc) shouldBe ref.get(doc) } - ahc.minKey() shouldBe ref.minKey() - ahc.maxKey() shouldBe ref.maxKey() - ahc.numHits() shouldBe ref.numHits() val k = rng.nextInt(numDocs) - val ahcKgr = ahc.kthGreatest(k) - val refKgr = ref.kthGreatest(k) - ahcKgr shouldBe refKgr + val actualDocIds = consumeDocIdSetIterator(ahc.docIdSetIterator(k)) + val referenceDocIds = consumeDocIdSetIterator(ref.docIdSetIterator(k)) + + referenceDocIds shouldBe actualDocIds } } + + "the counter emits docs that had zero matches (bug, https://github.com/alexklibisz/elastiknn/issues/715)" in { + // Only documents 0 and 9 had a hit, so we should expect to only emit those two. + // But the k=10th greatest value is 0, so we end up emitting all of the doc IDs, + // including 8 of which had zero hits. + val ahc = new ArrayHitCounter(10) + ahc.increment(0) + ahc.increment(9) + val docIds = consumeDocIdSetIterator(ahc.docIdSetIterator(10)) + docIds shouldBe List(0, 1, 2, 3, 4, 5, 6, 7, 8, 9) + // Once the bug is fixed, this should be the correct result: + // docIds shouldBe List(0, 9) + } } diff --git a/elastiknn-models/src/main/java/com/klibisz/elastiknn/models/ExactModel.java b/elastiknn-models/src/main/java/com/klibisz/elastiknn/models/ExactModel.java index fb23f7d2d..cfaead674 100644 --- a/elastiknn-models/src/main/java/com/klibisz/elastiknn/models/ExactModel.java +++ b/elastiknn-models/src/main/java/com/klibisz/elastiknn/models/ExactModel.java @@ -4,8 +4,6 @@ import com.klibisz.elastiknn.vectors.FloatVectorOps; import jdk.internal.vm.annotation.ForceInline; -import java.util.Arrays; - public class ExactModel { @ForceInline