(57)【特許請求の範囲】
【請求項１】
フィルタ対象であるアイテムが複数集められたアイテム群に関するデータを複数格納しておくアイテム格納手段と、
フィルタ条件に関するデータを複数格納しておくフィルタ格納手段と、
前記アイテム格納手段から複数のアイテム群を読み出し、前記フィルタ格納手段から複数のフィルタ条件を読み出して、各アイテム群に対して、アイテム群に含まれる複数のアイテムを各フィルタ条件でそれぞれフィルタし、フィルタ前のアイテム数とフィルタ後のアイテム数とを用いて導出した関数又は数式を当該フィルタの条件に対する重み関数とし、当該重み関数を、アイテム群を識別するアイテム群識別子とフィルタ条件を識別するフィルタ識別子とに関連付けて対応関係格納テーブルに格納しておく第１処理手段と、
受信した要求アイテム群識別子及び要求フィルタ識別子に対応する重み関数を前記対応関係格納テーブルから取得し、受信した要求アイテム数に対して当該重み関数を演算させた値をフィルタの処理対象アイテム数とし、前記要求アイテム群識別子に対応するアイテム群から当該処理対象アイテム数のアイテムを取得して、取得したアイテムに対して前記要求フィルタ識別子に対応するフィルタ条件でフィルタして返信する第２処理手段と、
を有することを特徴とするフィルタリング最適化装置。
【請求項２】
前記第１処理手段は、
アイテム群に含まれる複数のアイテムのうち所定のアイテム数を有する複数のアイテムセットごとに、前記重み関数をそれぞれ計算して、前記対応関係格納テーブルに更に格納しておき、
前記第２処理手段は、
当該重み関数を用いて前記処理対象アイテム数を計算することを特徴とする請求項１記載のフィルタリング最適化装置。
【請求項３】
前記第１処理手段は、
前記複数のアイテムセットにそれぞれ対応するフィルタ後のアイテム数を前記対応関係格納テーブルに更に格納しておき、
前記第２処理手段は、
前記要求アイテム数以上で最小の前記フィルタ後のアイテム数に対応する重み関数を用いて前記処理対象アイテム数を計算することを特徴とする請求項２記載のフィルタリング最適化装置。
【請求項４】
前記第１処理手段は、
アイテム群に適用されたフィルタ条件ごとに、前記複数の重み関数を平均化した平均重み関数をそれぞれ計算して、前記対応関係格納テーブルに更に格納しておき、
前記第２処理手段は、
当該平均重み関数を用いて前記処理対象アイテム数を計算することを特徴とする請求項２又は３記載のフィルタリング最適化装置。
【請求項５】
前記平均重み関数は、
前記複数の重み関数の平均に重み関数の標準偏差を３倍した値を加えた関数であることを特徴とする請求項４記載のフィルタリング最適化装置。
【請求項６】
コンピュータにより行うフィルタリング最適化方法において、
フィルタ対象であるアイテムが複数集められたアイテム群に関するデータをアイテム格納手段に複数格納しておく第１ステップと、
フィルタ条件に関するデータをフィルタ格納手段に複数格納しておく第２ステップと、
前記アイテム格納手段から複数のアイテム群を読み出し、前記フィルタ格納手段から複数のフィルタ条件を読み出して、各アイテム群に対して、アイテム群に含まれる複数のアイテムを各フィルタ条件でそれぞれフィルタし、フィルタ前のアイテム数とフィルタ後のアイテム数とを用いて導出した関数又は数式を当該フィルタの条件に対する重み関数とし、当該重み関数を、アイテム群を識別するアイテム群識別子とフィルタ条件を識別するフィルタ識別子とに関連付けて対応関係格納テーブルに格納しておく第３ステップと、
受信した要求アイテム群識別子及び要求フィルタ識別子に対応する重み関数を前記対応関係格納テーブルから取得し、受信した要求アイテム数に対して当該重み関数を演算させた値をフィルタの処理対象アイテム数とし、前記要求アイテム群識別子に対応するアイテム群から当該処理対象アイテム数のアイテムを取得して、取得したアイテムに対して前記要求フィルタ識別子に対応するフィルタ条件でフィルタして返信する第４ステップと、
を有することを特徴とするフィルタリング最適化方法。
【請求項７】
請求項６記載の各ステップをコンピュータに実行させることを特徴とするフィルタリング最適化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データのフィルタリング技術に関する。
【背景技術】
【０００２】
フィルタリング（略称するフィルタと同義）とは、一般的に、所定のアイテム群から特定属性のアイテムを取り除く処理をいう。例えば、インターネット上の膨大なウェブサイトから、不適切な内容が記述されたウェブサイトへの接続を排除するコンテンツフィルタリングに代表される。
【０００３】
その他、ウィルスメールやスパムメール等を判別し隔離する電子メールフィルタリング（スパムフィルタ）、不正な侵入を防止するために不審なパケットヘッダを拒否するパケットフィルタリング（ファイアウォール）等も一例に挙げられる（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１６６５１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に開示されたパケットフィルタリング技術は、例えば処理の並列化等、フィルタリングの処理自体を高速化しているため、処理対象であるアイテムの数が極めて膨大である場合には、フィルタリングの処理単体の速度はある程度速くても全体としては時間がかかり、結果として高速にフィルタリングできないという課題があった。
【０００６】
本発明は、上記課題を鑑みてなされたものであり、その課題とするところは、高速にフィルタリングすることにある。
【課題を解決するための手段】
【０００７】
請求項１記載のフィルタリング最適化装置は、フィルタ対象であるアイテムが複数集められたアイテム群に関するデータを複数格納しておくアイテム格納手段と、フィルタ条件に関するデータを複数格納しておくフィルタ格納手段と、前記アイテム格納手段から複数のアイテム群を読み出し、前記フィルタ格納手段から複数のフィルタ条件を読み出して、各アイテム群に対して、アイテム群に含まれる複数のアイテムを各フィルタ条件でそれぞれフィルタし、フィルタ前のアイテム数とフィルタ後のアイテム数とを用いて導出した関数又は数式を当該フィルタの条件に対する重み関数とし、当該重み関数を、アイテム群を識別するアイテム群識別子とフィルタ条件を識別するフィルタ識別子とに関連付けて対応関係格納テーブルに格納しておく第１処理手段と、受信した要求アイテム群識別子及び要求フィルタ識別子に対応する重み関数を前記対応関係格納テーブルから取得し、受信した要求アイテム数に対して当該重み関数を演算させた値をフィルタの処理対象アイテム数とし、前記要求アイテム群識別子に対応するアイテム群から当該処理対象アイテム数のアイテムを取得して、取得したアイテムに対して前記要求フィルタ識別子に対応するフィルタ条件でフィルタして返信する第２処理手段と、を有することを特徴とする。
【０００８】
本発明によれば、受信した要求アイテム群識別子及び要求フィルタ識別子に対応する重み関数を対応関係格納テーブルから取得し、受信した要求アイテム数に対して当該重み関数を演算させた値をフィルタの処理対象アイテム数とする（処理対象アイテム数の最適化）ため、従来であればアイテム群に含まれる全てのアイテムを処理対象としたが、フィルタリングの処理対象数を限定でき、結果として高速なフィルタリングを実現できる。
【０００９】
請求項２記載のフィルタリング最適化装置は、請求項１記載のフィルタリング最適化装置において、前記第１処理手段は、アイテム群に含まれる複数のアイテムのうち所定のアイテム数を有する複数のアイテムセットごとに、前記重み関数をそれぞれ計算して、前記対応関係格納テーブルに更に格納しておき、前記第２処理手段は、当該重み関数を用いて前記処理対象アイテム数を計算することを特徴とする。
【００１０】
請求項３記載のフィルタリング最適化装置は、請求項２記載のフィルタリング最適化装置において、前記第１処理手段は、前記複数のアイテムセットにそれぞれ対応するフィルタ後のアイテム数を前記対応関係格納テーブルに更に格納しておき、前記第２処理手段は、前記要求アイテム数以上で最小の前記フィルタ後のアイテム数に対応する重み関数を用いて前記処理対象アイテム数を計算することを特徴とする。
【００１１】
請求項４記載のフィルタリング最適化装置は、請求項２又は３記載のフィルタリング最適化装置において、前記第１処理手段は、アイテム群に適用されたフィルタ条件ごとに、前記複数の重み関数を平均化した平均重み関数をそれぞれ計算して、前記対応関係格納テーブルに更に格納しておき、前記第２処理手段は、当該平均重み関数を用いて前記処理対象アイテム数を計算することを特徴とする。
【００１２】
請求項５記載のフィルタリング最適化装置は、請求項４記載のフィルタリング最適化装置において、前記平均重み関数は、前記複数の重み関数の平均に重み関数の標準偏差を３倍した値を加えた関数であることを特徴とする。
【００１３】
請求項６記載のフィルタリング最適化方法は、コンピュータにより行うフィルタ方法において、フィルタ対象であるアイテムが複数集められたアイテム群に関するデータをアイテム格納手段に複数格納しておく第１ステップと、フィルタ条件に関するデータをフィルタ格納手段に複数格納しておく第２ステップと、前記アイテム格納手段から複数のアイテム群を読み出し、前記フィルタ格納手段から複数のフィルタ条件を読み出して、各アイテム群に対して、アイテム群に含まれる複数のアイテムを各フィルタ条件でそれぞれフィルタし、フィルタ前のアイテム数とフィルタ後のアイテム数とを用いて導出した関数又は数式を当該フィルタの条件に対する重み関数とし、当該重み関数を、アイテム群を識別するアイテム群識別子とフィルタ条件を識別するフィルタ識別子とに関連付けて対応関係格納テーブルに格納しておく第３ステップと、受信した要求アイテム群識別子及び要求フィルタ識別子に対応する重み関数を前記対応関係格納テーブルから取得し、受信した要求アイテム数に対して当該重み関数を演算させた値をフィルタの処理対象アイテム数とし、前記要求アイテム群識別子に対応するアイテム群から当該処理対象アイテム数のアイテムを取得して、取得したアイテムに対して前記要求フィルタ識別子に対応するフィルタ条件でフィルタして返信する第４ステップと、を有することを特徴とする。
【００１４】
本発明によれば、受信した要求アイテム群識別子及び要求フィルタ識別子に対応する重み関数を対応関係格納テーブルから取得し、受信した要求アイテム数に対して当該重み関数を演算させた値をフィルタの処理対象アイテム数とする（処理対象アイテム数の最適化）ため、従来であればアイテム群に含まれる全てのアイテムを処理対象としたが、フィルタリングの処理対象数を限定でき、結果として高速なフィルタリングを実現できる。
【００１５】
請求項７記載のフィルタリング最適化プログラムは、請求項６記載の各ステップをコンピュータに実行させることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、高速にフィルタリングできる。
【図面の簡単な説明】
【００１７】
【図１】フィルタリング最適化装置の機能ブロック構成を示す図である。
【図２】アイテム群テーブルの例を示す図である。
【図３】アイテム群テーブルの例を示す図である。
【図４】フィルタ情報テーブルの例を示す図である。
【図５】対応関係格納テーブルの生成処理動作を示す図である。
【図６】対応関係格納テーブルの例を示す図である。
【図７】フィルタリング最適化装置の全体処理動作を示す図である。
【図８】フィルタリング最適化装置の全体処理動作を示す図である。
【発明を実施するための形態】
【００１８】
以下、本発明を実施する一実施の形態について図面を用いて説明する。但し、本発明は多くの異なる様態で実施することが可能であり、本実施の形態の記載内容に限定して解釈すべきではない。
【００１９】
本発明は、フィルタリングの処理対象アイテム数を最適化すること、すなわち、膨大な量のアイテムから処理対象となるアイテムを予測してフィルタリングの処理対象アイテム数を限定することにより、各アイテムに対するフィルタリングを最小限の計算量で効率的に行って高速なフィルタリングを実現し、データベースやキャッシュメモリの最適な運用を図ることにある。
【００２０】
また、その処理対象アイテム数を予測する際に、重み関数に代えて平均重み関数を利用することにより、データベースへのアクセス処理の観点から更なる高速化を図ることができる。なお、平均重み関数を活用する用途としては、ソート無しアイテム群に対する要求時の処理だけでなく、ソート済みアイテム群に対する要求時の処理にも活用できる。
【００２１】
〔フィルタリング最適化装置の構成について〕
最初に、本実施の形態に係るフィルタリング最適化装置の構成について説明する。図１は、フィルタリング最適化装置の機能ブロック構成を示す図である。
【００２２】
このフィルタリング最適化装置１００は、要求受付部１１と、処理対象アイテム数予測部１２と、フィルタ処理部１３と、アイテム出力部１４と、アイテム格納部１５と、フィルタ情報格納部１６と、対応関係格納部１７とで主に構成される。以下、それら各部の機能について詳述する。
【００２３】
なお、要求受付部１１と、処理対象アイテム数予測部１２と、フィルタ処理部１３と、アイテム出力部１４とは、ＣＰＵ等により実現され、アイテム格納部１５と、フィルタ情報格納部１６と、対応関係格納部１７とは、データベースやメモリ等により実現される。また、それら各部の機能はプログラムによって実行される。
【００２４】
要求受付部１１は、ポータル３００から送信された要求情報を受信して受け付ける機能を有する。要求情報には、ポータルの利用者が所望する１以上のアイテム群名（以下、要求アイテム群名）と当該要求アイテム群に対して所望される１以上のフィルタ名（以下、要求フィルタ名）とを包括した要求属性条件と、フィルタリング最適化装置１００から返信として所期されるアイテム数（以下、要求アイテム数）とが含まれている。
【００２５】
なお、ポータル３００とは、携帯網やインターネット網等の通信ネットワークを介して接続された携帯端末、スマートフォン、ＰＣ、タブレット、ＳＴＢ（Set Top Box）、ＤＶＴ（Digital TV）等の情報端末を用いてフィルタリング最適化装置１００にアクセスするときの入口となるページやウェブサイトのことをいう。
【００２６】
処理対象アイテム数予測部１２は、要求受付部１１で受け付けた要求情報に基づいてフィルタリングの処理対象アイテム数を予測する機能を有する。すなわち、要求情報に含まれている要求アイテム群名及び要求フィルタ名に対応する重み関数又は平均重み関数を対応関係格納部１７の対応関係格納テーブルから取得し、当該要求情報に更に含まれている要求アイテム数に対して当該重み関数又は当該平均重み関数を積算した値をフィルタリングの処理対象アイテム数と予測する。
【００２７】
フィルタ処理部１３は、要求に応じてフィルタリングする機能を有する。すなわち、要求アイテム群名に対応するアイテム群をアイテム格納部１５から取得すると共に、要求フィルタ名に対応するフィルタ条件をフィルタ情報格納部１６から取得して、当該取得したアイテム群から処理対象アイテム数予測部１２で予測された処理対象アイテム数のアイテムを取得し、当該取得した数のアイテムに対して、上記取得したフィルタ条件でフィルタリングする。
【００２８】
アイテム出力部１４は、フィルタ処理部１３でフィルタリングされたアイテムをポータル３００に出力する機能を有する。
【００２９】
アイテム格納部１５は、フィルタリングの処理対象であるアイテムが複数集められたアイテム群に関するデータを複数格納しておく機能を有する。例えば、図２に示すアイテム群Ａや、図３に示すアイテム群Ｂのテーブルが保持されている。アイテム群Ａは、スコア等を基準として降順にソートされたソート済みアイテム群であり、各アイテムに対してランキングを示すＮｏ．が当該ソート順に付与されている。一方、アイテム群Ｂは、順序規則のないソート無しアイテム群であり、アイテム格納部１５に格納された複数のアイテムが単にリスト化された状態のアイテム群である。
【００３０】
フィルタ情報格納部１６は、要求に応じたフィルタリングに用いるフィルタ情報に関するデータを格納しておく機能を有している。例えば、図４に示すように、フィルタリングを識別するフィルタ名に対して、フィルタリングの条件を示すフィルタ条件と、フィルタ条件で指定された条件の実体値を定めたフィルタ情報とが対応付けて設定されている。
【００３１】
対応関係格納部１７は、処理対象アイテム数予測部１２で行う処理対象アイテム数の予測に必要なデータ（重み関数や平均重み関数等）を対応関係格納テーブルに格納しておく機能を有する。なお、対応関係格納テーブルは、処理対象アイテム数予測部１２及びフィルタ処理部１３により事前に生成される。当該事前処理について引き続き説明する。
【００３２】
〔事前処理について〕
フィルタリング最適化装置１００の全体処理動作について説明する前に、対応関係格納テーブルを生成するための事前処理について説明する。
【００３３】
以下説明する事前処理内の全ての処理は、アイテム格納部１５に格納されている全てのアイテム群に対して実施される。また、アイテム群には、推薦アルゴリズムごとのリスト、期間ごとのリスト、インデックス分けされたリスト、ジャンルごとのリスト、制作会社ごとのリスト等、各リストによってアイテムの質も異なり、適用するフィルタ群も異なるため、それぞれ個別に計算される。
【００３４】
事前処理動作のフローチャートを図５に示す。また、当該事前処理により生成される対応関係格納テーブルを図６に示す。
【００３５】
最初に、処理対象アイテム数予測部１２は、アイテム格納部１５から全てのアイテム群を読み出して、全てのアイテム群に対して以降の処理が終了したか否かを判定する（Ｓ１０１）。このＳ１０１の判定処理は、全アイテム群に対して事前処理が終了するまで繰り返す処理として機能する。
【００３６】
次に、処理対象アイテム数予測部１２は、Ｓ１０１の判定処理でＮｏと判定された場合に、処理未終了のアイテム群から任意のアイテム群を選択し、当該アイテム群に対して全てのフィルタ条件でフィルタリングの処理が終了したか否かを判定する（Ｓ１０２）。このＳ１０２の判定処理は、選択されたアイテム群に対して全フィルタ条件が適用されるまで繰り返す処理として機能する。
【００３７】
一方、Ｓ１０１の判定処理でＹｅｓと判定された場合には、この事前処理動作を終了する。
【００３８】
次に、処理対象アイテム数予測部１２は、Ｓ１０２の判定処理でＮｏと判定された場合に、Ｓ１０２で選択されたアイテム群の全アイテムから一定数のアイテムセットを生成して、各アイテムセットに含まれるアイテム数をアイテムセット数として対応関係格納テーブルに格納する（Ｓ１０３）。
【００３９】
例えば、総アイテム数が２００個のソート済みアイテム群が選択され、一定数を１０とした場合には、ランキング１から２０までのアイテムセット、ランキング１から４０までのアイテムセット、…、ランキング１から２００までのアイテムセットのように、１０セットのアイテムセットを生成し、各アイテムセットの最大値を対応関係格納テーブルのアイテムセット数に格納する。
【００４０】
なお、この一定数とは、フィルタリングの高速化に直接作用する定数（パラメータ）であり、アイテム群や要求の内容によって異なるため、システムや装置ごとにチューニングされることが好ましい。
【００４１】
一方、Ｓ１０２の判定処理でＹｅｓと判定された場合には、Ｓ１０１に戻る。
【００４２】
次に、処理対象アイテム数予測部１２は、Ｓ１０３で生成された全てのアイテムセットに対して以降の処理が終了したか否かを判定する（Ｓ１０４）。このＳ１０４の判定処理は、全アイテムセットに対して重み関数をそれぞれ算出させる処理として機能する。
【００４３】
次に、フィルタ処理部１３は、Ｓ１０４の判定処理でＮｏと判定された場合に、対象となるアイテムセット内のアイテムをアイテム格納部１５から取得すると共に、フィルタ条件をフィルタ情報格納部１６から取得して、当該フィルタ条件を用いて当該取得した複数のアイテムをフィルタリングする（Ｓ１０５）。
【００４４】
なお、上述したように、Ｓ１０２の判定処理は、全フィルタ条件が適用されるまで繰り返す処理として機能するため、対象となるアイテムセット内の複数のアイテムは、全てのフィルタ条件によりそれぞれフィルタリングされる。
【００４５】
次に、Ｓ１０５の後、Ｓ１０５のフィルタ処理によっていくつかのアイテムが削除されるので、処理対象アイテム数予測部１２は、処理後に残ったアイテム数を処理後アイテム数として対応関係格納テーブルに格納し、アイテムセット数（フィルタ前のアイテム数）を処理後アイテム数（フィルタ後のアイテム数）で除算した値を当該フィルタの条件に対する重み関数として対応関係格納テーブルに格納する（Ｓ１０６）。Ｓ１０６の処理後は、Ｓ１０４に戻る。
【００４６】
なお、重み関数は、ｆ（ｘ）＝ａｘや、ｆ（ｘ）＝ａｘ＋ｂ等の方程式になる。以下の説明は、重み関数をｆ（ｘ）＝ａｘとして想定した重み係数として説明する。
【００４７】
一方、処理対象アイテム数予測部１２は、Ｓ１０４の判定処理でＹｅｓと判定された場合、すなわち、全てのアイテムセットに対して、アイテムセット数、処理後アイテム数、重み関数が算出された場合に、アイテム群に適用されたフィルタ条件ごとに、全てのアイテムセット数における重み関数を用いて、以下の式（１）より平均重み関数を算出し、対応関係格納テーブルに格納する（Ｓ１０７）。Ｓ１０７の処理後は、Ｓ１０２に戻る。
【００４８】
平均重み関数＝重み関数の平均関数（平均値）＋重み関数の標準偏差×３  ・・・（１）
【００４９】
以上のＳ１０１〜Ｓ１０７の各処理を全アイテム群、全フィルタに対して実行して、事前処理動作のフローが終了する。これにより、図６に示したような、アイテム群名と、フィルタ名と、アイテムセット数と、処理後アイテム数と、重み関数と平均重み関数とが関連付けられた対応関係格納テーブルが完成する。
【００５０】
〔全体処理について〕
続いて、図１を参照しながら、フィルタリング最適化装置１００の全体処理動作について説明する。
【００５１】
最初に、要求受付部１１が、ポータル３００から、どのようなアイテム群について、どのようなフィルタリングを行い、どれだけの件数欲しいか、という問い合わせを受け付ける（Ｓ１）。
【００５２】
例えば、スコア等により降順でソートされたソート済みアイテム群Ａに対して、フィルタＦ１→フィルタＦ２→フィルタＦ３→フィルタＦ４→フィルタＦ５→フィルタＦ６の順でフィルタリングした後に、１０件のリストが欲しいという要求を受け付ける。
【００５３】
この場合、要求受付部１１は、要求属性条件を「要求アイテム群名：ソート済みアイテム群Ａ、要求フィルタ名：Ｆ１，Ｆ２，Ｆ３，Ｆ４，Ｆ５，Ｆ６」とし、要求アイテム数を「１０」とする要求情報を受信する。
【００５４】
次に、Ｓ１の後、処理対象アイテム数予測部１２が、対応関係格納テーブルから、ソート済みアイテム群Ａの各フィルタＦ１〜Ｆ６に対応する各重み関数ＷＦ１〜ＷＦ６をそれぞれ取得して、以下の式（２）より処理対象アイテム数を算出する（Ｓ２）。
【００５５】
処理対象アイテム数＝ＷＦ１（ＷＦ２（ＷＦ３（ＷＦ４（ＷＦ５（ＷＦ６（ｒｅｑＣ））））））  ・・・（２）
なお、ｒｅｑＣは、要求アイテム数である。また、例えば、（ＷＦ６（ｒｅｑＣ）は、ＷＦ６×ｒｅｑＣを意味する。
【００５６】
ここで、例えば、ソート済みアイテム群Ａの総アイテム数を１０００個とすると、従来では、当該１０００個の全てが処理対象アイテム数とされる。
【００５７】
一方、本実施の形態では、そのソート済みアイテム群Ａに対してフィルタ条件毎に重みを予め計算しておき、要求フィルタ名に対応する重みに対して要求アイテム数を乗算した計算値を、ポータルの利用者が応答として期待している処理対象アイテム数と予測するようにしている。
【００５８】
すなわち、ソート済みアイテム群Ａの総アイテム数に依存することなく、要求アイテム数と重み関数とにより処理対象アイテム数を予測的に計算するので、処理対象アイテム数を限定（例えば、３０）することが可能となる。
【００５９】
次に、フィルタ処理部１３が、Ｓ２で算出された処理対象アイテム数分のアイテムを、ソート済みアイテム群Ａから取得し、フィルタＦ１→フィルタＦ２→フィルタＦ３→フィルタＦ４→フィルタＦ５→フィルタＦ６の順（重み関数の計算順とは逆順）でフィルタリングを実行する（Ｓ３）。
【００６０】
最後に、アイテム出力部１４が、フィルタリング後のフィルタ・ソート済みアイテム群Ａをポータル３００に送信する（Ｓ４）。このとき、ポータル３００からの要求は１０件であるので、フィルタリング後のアイテム数が１０件を超える場合には、任意に選択された１０件を送信してもよいし、フィルタリング後の全てを送信してもよい。また、フィルタリング後のアイテム数が１０件に満たない場合には、その全てを送信するようにしてもよい。
【００６１】
〔全体処理：要求されたフィルタ条件が１つの場合の動作例〕
次に、ポータル３００から要求されたフィルタ条件が１つの場合の全体処理動作例について説明する。図７は、フィルタ条件が１つの場合の全体処理動作を示す図である。
【００６２】
最初に、要求受付部１１が、要求アイテム数と、要求属性条件（要求アイテム群名、要求フィルタ名Ｆ１）とを取得する（Ｓ２０１）。
【００６３】
次に、Ｓ２０１の後、要求アイテム群名がソート済みアイテム群の場合にはＳ２０３に進み、要求アイテム群名がソート無しアイテム群の場合にはＳ２０３’に進む（Ｓ２０２）。
【００６４】
次に、Ｓ２０２の判定処理で要求アイテム群名がソート済みアイテム群の場合、処理対象アイテム数予測部１２は、対応関係格納テーブルを参照し、要求アイテム群名と要求フィルタ名Ｆ１とに対応し、かつ、要求アイテム数を上回る最小の処理後アイテム数に対応する重み関数ＷＦ１を取得する（Ｓ２０３）。
【００６５】
次に、Ｓ２０３の後、処理対象アイテム数予測部１２は、Ｓ２０３で取得した重み関数ＷＦ１と要求アイテム数ｒｅｑＣとを用いて、以下の式（３）より処理対象アイテム数を算出する（Ｓ２０４）。
【００６６】
処理対象アイテム数＝ＷＦ１×ｒｅｑＣ  ・・・（３）
【００６７】
次に、Ｓ２０４の後、フィルタ処理部１３が、Ｓ２０４で算出された処理対象アイテム数のアイテムをソート済みアイテム群から取得し、フィルタＦ１のフィルタリングを実行する（Ｓ２０５）。
【００６８】
最後に、Ｓ２０５の後、アイテム出力部１４が、フィルタリング後のフィルタ・ソート済みアイテム群をポータル３００に送信する（Ｓ２０６）。
【００６９】
一方、Ｓ２０２の判定処理で要求アイテム群名がソート無しアイテム群の場合、処理対象アイテム数予測部１２は、対応関係格納テーブルを参照し、要求アイテム群名と要求フィルタ名Ｆ１とに対応する平均重み関数ＷＦ１（ＡＶＥ）を取得する（Ｓ２０３’）。
【００７０】
次に、Ｓ２０３’の後、処理対象アイテム数予測部１２は、Ｓ２０３で取得した平均重み関数ＷＦ１（ＡＶＥ）と要求アイテム数ｒｅｑＣとを用いて、以下の式（４）より処理対象アイテム数を算出する（Ｓ２０４’）。
【００７１】
処理対象アイテム数＝ＷＦ１（ＡＶＥ）×ｒｅｑＣ  ・・・（４）
【００７２】
次に、Ｓ２０４’の後、フィルタ処理部１３が、Ｓ２０４’で算出された処理対象アイテム数のアイテムをソート無しアイテム群から取得し、フィルタＦ１のフィルタリングを実行し、アイテム出力部１４が、フィルタリング後のフィルタ・ソート無しアイテム群をポータル３００に送信する。
【００７３】
〔全体処理：要求されたフィルタ条件が複数の場合の動作例〕
次に、ポータル３００から要求されたフィルタ条件が複数の場合の全体処理動作例について説明する。図８は、フィルタ条件が複数の場合の全体処理動作を示す図である。
【００７４】
最初に、要求受付部１１が、要求アイテム数と、要求属性条件（要求アイテム群名、要求フィルタ名Ｆ１，Ｆ２，Ｆ３）とを取得する（Ｓ３０１）。なお、この要求は、Ｆ１→Ｆ２→Ｆ３の順でフィルタリングを要求している。
【００７５】
次に、Ｓ３０１の後、要求アイテム群名がソート済みアイテム群の場合にはＳ３０３に進み、要求アイテム群名がソート無しアイテム群の場合にはＳ３０３’に進む（Ｓ３０２）。
【００７６】
次に、Ｓ３０２の判定処理で要求アイテム群名がソート済みアイテム群の場合、処理対象アイテム数予測部１２は、対応関係格納テーブルを参照し、要求アイテム群名と要求フィルタ名Ｆ３とに対応し、かつ、要求アイテム数を上回る最小の処理後アイテム数に対応する重み関数ＷＦ３を取得する（Ｓ３０３）。
【００７７】
次に、Ｓ３０３の後、処理対象アイテム数予測部１２は、Ｓ３０３で取得した重み関数ＷＦ３と要求アイテム数ｒｅｑＣとを用いて、以下の式（５）より、フィルタＦ３の前に存在するべき処理対象アイテム数として、Ｆ３前・処理対象アイテム数を算出する（Ｓ３０４）。
【００７８】
Ｆ３前・処理対象アイテム数＝ＷＦ３×ｒｅｑＣ  ・・・（５）
【００７９】
次に、Ｓ３０４の後、処理対象アイテム数予測部１２は、対応関係格納テーブルを参照し、要求アイテム群名と要求フィルタ名Ｆ２とに対応し、かつ、要求アイテム数を上回る最小の処理後アイテム数に対応する重み関数ＷＦ２を取得する（Ｓ３０５）。
【００８０】
次に、Ｓ３０５の後、処理対象アイテム数予測部１２は、Ｓ３０５で取得した重み関数ＷＦ２とＦ３前・処理対象アイテム数とを用いて、以下の式（６）より、フィルタＦ２の前に存在するべき処理対象アイテム数として、Ｆ２前・処理対象アイテム数を算出する（Ｓ３０６）。
【００８１】
Ｆ２前・処理対象アイテム数＝ＷＦ２×Ｆ３前・処理対象アイテム数  ・・・（６）
【００８２】
次に、Ｓ３０６の後、処理対象アイテム数予測部１２は、対応関係格納テーブルを参照し、要求アイテム群名と要求フィルタ名Ｆ１とに対応し、かつ、要求アイテム数を上回る最小の処理後アイテム数に対応する重み関数ＷＦ１を取得する（Ｓ３０７）。
【００８３】
次に、Ｓ３０７の後、処理対象アイテム数予測部１２は、Ｓ３０７で取得した重み関数ＷＦ１とＦ２前・処理対象アイテム数とを用いて、以下の式（７）より、全てのフィルタ処理の前に存在するべき処理対象アイテム数として、処理対象アイテム数を算出する（Ｓ３０８）。
【００８４】
処理対象アイテム数＝ＷＦ１×Ｆ２前・処理対象アイテム数  ・・・（７）
【００８５】
ここで、以上のＳ３０３〜Ｓ３０８の各処理をまとめると、各フィルタに関する重み関数ＷＦ１〜ＷＦ３と要求アイテム数ｒｅｑＣとより、以下の式（８）より、処理対象アイテム数を算出することとなる。
【００８６】
処理対象アイテム数＝ＷＦ１（ＷＦ２（ＷＦ３（ｒｅｑＣ）））  ・・・（８）
【００８７】
次に、Ｓ３０８の後、フィルタ処理部１３が、Ｓ３０８で算出された処理対象アイテム数のアイテムをソート済みアイテム群から取得し、Ｆ１→Ｆ２→Ｆ３の順でフィルタリングを実行する（Ｓ３０９）。
【００８８】
最後に、Ｓ３０９の後、アイテム出力部１４が、フィルタリング後のフィルタ・ソート済みアイテム群をポータル３００に送信する（Ｓ３１０）。
【００８９】
一方、Ｓ３０２の判定処理で要求アイテム群名がソート無しアイテム群の場合、処理対象アイテム数予測部１２は、対応関係格納テーブルを参照し、要求アイテム群名と要求フィルタ名Ｆ３とに対応する平均重み関数ＷＦ３（ＡＶＥ）を取得する（Ｓ３０３’）。
【００９０】
次に、Ｓ３０３’の後、処理対象アイテム数予測部１２は、Ｓ３０３’で取得した平均重み関数ＷＦ３（ＡＶＥ）と要求アイテム数ｒｅｑＣとを用いて、以下の式（９）より、フィルタＦ３の前に存在するべき処理対象アイテム数として、Ｆ３前・処理対象アイテム数を算出する（Ｓ３０４’）。
【００９１】
Ｆ３前・処理対象アイテム数＝ＷＦ３（ＡＶＥ）×ｒｅｑＣ  ・・・（９）
【００９２】
次に、Ｓ３０４’の後、処理対象アイテム数予測部１２は、対応関係格納テーブルを参照し、要求アイテム群名と要求フィルタ名Ｆ２に対応する平均重み関数ＷＦ２（ＡＶＥ）を取得する（Ｓ３０５’）。
【００９３】
次に、Ｓ３０５’の後、処理対象アイテム数予測部１２は、Ｓ３０５’で取得した平均重み関数ＷＦ２（ＡＶＥ）とＦ３前・処理対象アイテム数とを用いて、以下の式（１０）より、フィルタＦ２の前に存在するべき処理対象アイテム数として、Ｆ２前・処理対象アイテム数を算出する（Ｓ３０６’）。
【００９４】
Ｆ２前・処理対象アイテム数＝ＷＦ３（ＡＶＥ）×Ｆ３前・処理対象アイテム数  ・・・（１０）
【００９５】
次に、Ｓ３０６’の後、処理対象アイテム数予測部１２は、対応関係格納テーブルを参照し、要求アイテム群名と要求フィルタ名Ｆ１に対応する平均重み関数ＷＦ１（ＡＶＥ）を取得する（Ｓ３０７’）。
【００９６】
次に、Ｓ３０７’の後、処理対象アイテム数予測部１２は、Ｓ３０７’で取得した平均重み関数ＷＦ１（ＡＶＥ）とＦ２前・処理対象アイテム数とを用いて、以下の式（１１）より、全てのフィルタ処理の前に存在するべき処理対象アイテム数として、処理対象アイテム数を算出する（Ｓ３０８’）。
【００９７】
処理対象アイテム数＝ＷＦ１（ＡＶＥ）×Ｆ２前・処理対象アイテム数  ・・・（１１）
【００９８】
ここで、以上のＳ３０３’〜Ｓ３０８ ’の各処理をまとめると、各フィルタに関する重み関数ＷＦ１〜ＷＦ３と要求アイテム数ｒｅｑＣとより、以下の式（１２）より、処理対象アイテム数を算出することとなる。
【００９９】
処理対象アイテム数＝ＷＦ１（ＷＦ２（ＷＦ３（ｒｅｑＣ）））  ・・・（１２）
【０１００】
次に、Ｓ３０８’の後、フィルタ処理部１３が、Ｓ３０８’で算出された処理対象アイテム数のアイテムをソート無しアイテム群から取得し、Ｆ１→Ｆ２→Ｆ３の順でフィルタリングを実行し、アイテム出力部１４が、フィルタリング後のフィルタ・ソート無しアイテム群をポータル３００に送信する。
【０１０１】
なお、フィルタの適用を要求条件の順序どおりに行う必要がない場合には、重み関数の大きいフィルタより先に適用することで、要求時のフィルタ処理を高速化することができる。
【０１０２】
以上より、本実施の形態によれば、受信した要求アイテム群名及び要求フィルタ名に対応する重み関数を対応関係格納テーブルから取得し、受信した要求アイテム数に対して当該重み関数を積算した値をフィルタの処理対象アイテム数とする（処理対象アイテム数の最適化）ので、フィルタリングの処理対象数が膨大な量の場合であっても、フィルタリングの処理対象数を限定でき、フィルタリングの処理の精度を落とすことなく、結果として高速なフィルタリングを実現できる。
【０１０３】
最後に、本実施の形態では、重み関数を、アイテムセット数を処理後アイテム数で除算することにより計算し、フィルタリングの処理対象アイテム数を、要求アイテム数に対して重み関数又は平均重み関数を積算することにより計算（演算）したが、その計算方法は一例であり、関数や数式に基づいて計算した場合であっても、基本的には同様の効果を得ることができる。
【符号の説明】
【０１０４】
１００…フィルタリング最適化装置
１１…要求受付部
１２…処理対象アイテム数予測部
１３…フィルタ処理部
１４…アイテム出力部
１５…アイテム格納部
１６…フィルタ情報格納部
１７…対応関係格納部
３００…ポータル
Ｓ１０１〜Ｓ１０７、Ｓ１〜Ｓ４、Ｓ２０１〜Ｓ２０６、Ｓ３０１〜Ｓ３１０…処理ステップ
【図１】
0005498428.tif 000002
【図２】
0005498428.tif 000003
【図３】
0005498428.tif 000004
【図４】
0005498428.tif 000005
【図５】
0005498428.tif 000006
【図６】
0005498428.tif 000007
【図７】
0005498428.tif 000008
【図８】
0005498428.tif 000009