以下、図面を参照して本発明の実施形態について詳細に説明する。なお、以下に説明する実施の形態は、ショッピングシステムに対して本発明を適用した場合の実施形態である。
[1.ショッピングシステムの構成及び機能概要]
先ず、本実施形態に係るショッピングシステムSの構成について、図1を用いて説明する。図1は、本実施形態に係るショッピングシステムSの概要構成の一例を示す図である。
図1に示すように、ショッピングシステムSは、電子商店街サーバ1と、複数の店舗端末2と、複数のユーザ端末3と、を含んで構成されている。そして、電子商店街サーバ1と、各店舗端末2及び各ユーザ端末3とは、ネットワークNWを介して、例えば、通信プロトコルにTCP/IP等を用いて相互にデータの送受信が可能になっている。なお、ネットワークNWは、例えば、インターネット、専用通信回線(例えば、CATV(Community Antenna Television)回線)、移動体通信網(基地局等を含む)、及びゲートウェイ等により構築されている。
電子商店街サーバ1は、商品の購入が可能な電子商店街に関する各種処理を実行するサーバ装置である。電子商店街サーバ1は、本発明における検索装置の一例である。ユーザは、電子商店街を利用することにより、所望の店舗から所望の商品を購入することができる。電子商店街サーバ1は、ユーザ端末3からのリクエストに応じて、例えば、電子商店街のWebページを送信したり、商品の検索や購入等に関する処理を行ったりする。なお、商品は、本発明における検索対象の一例である。
店舗端末2は、電子商店街に出店している店舗の従業員等により利用される端末装置である。店舗端末2は、従業員等からの操作に基づいて電子商店街サーバ1等のサーバ装置にアクセスする。これにより、店舗端末2は、サーバ装置からWebページを受信して表示する。店舗端末2には、ブラウザや電子メールクライアント等のソフトウェアが組み込まれている。従業員は、店舗端末2を利用することにより、例えば、販売する商品の情報を電子商店街に登録したり、商品の注文内容を確認したりする。
ユーザ端末3は、電子商店街を利用するユーザの端末装置である。ユーザ端末3は、ユーザからの操作に基づいて電子商店街サーバ1にアクセスすることにより、電子商店街サーバ1からWebページを受信して表示する。ユーザ端末3には、ブラウザや電子メールクライアント等のソフトウェアが組み込まれている。ユーザ端末3としては、例えば、パーソナルコンピュータ、PDA(Personal Digital Assistant)、スマートフォン等の携帯情報端末、携帯電話機等が用いられる。
[2.検索条件の指定]
次に、電子商店街における商品の検索に用いられる検索条件をユーザが指定する方法について、図2乃至図5を用いて説明する。図2は、電子商店街のトップページの画面表示例を示す図である。トップページは、電子商店街において最上位に位置するWebページである。
図2に示すように、トップページは、検索条件設定領域110を含む。検索条件設定領域110は、検索条件を指定するためのウィジェット等が表示される領域である。ウィジェットは、Webページを構成する要素または部品である。具体的に、検索条件設定領域110には、1つの検索ワード入力欄111と、検索ボタン112とが表示される。
検索ワード入力欄111は、検索ワードを入力するための領域である。この検索ワード入力欄111は、本発明における入力領域の一例である。検索ワードは、商品の検索条件を示す語等である。検索ワード入力欄111に入力された検索ワードは、本発明における入力語の一例である。なお、図2では、検索ワード入力欄111に対してユーザにより検索ワードが入力された状態である。
検索ボタン112は、検索ワード入力欄111に入力された検索ワードを電子商店街サーバ1に送信するためのボタンである。また、検索ボタン112は、電子商店街サーバ1に商品を検索させるためのボタンである。なお、ユーザは、検索ワード入力欄111に検索ワードを入力した後に、例えば、Enterキー、実行キー等を押すことにより、入力された検索ワードを電子商店街サーバ1に送信することができる。そして、検索ワードに基づいて電子商店街サーバ1が商品を検索する。
ユーザは、各検索ワードの間に空白を入れることにより、複数の検索ワードを検索ワード入力欄111に入力することができる。そして、ユーザは、複数の検索ワードを入力することにより、詳細な検索条件を指定することができる。以下では、検索条件の指定方法について説明する。なお、ユーザは、検索ワード入力欄111に検索ワードを1つのみ入力して、電子商店街サーバ1に商品を検索させることも可能である。
[2−1.キーワード]
ユーザは、キーワード検索に用いられるキーワードを、検索ワードとして入力することができる。キーワード検索では、各商品の情報として電子商店街に登録されている文字情報に、入力されたキーワードを含む商品が検索される。この文字情報としては、例えば、商品名、商品説明がある。この場合、商品名または商品説明の少なくとも何れか一方に、入力されたキーワードを含むことが、検索条件となる。
また、ユーザは、「除く」、「以外」、「含まない」、「除外」、「ではない」等、除くことを表す文字を、検索ワードに含めることができる。このような文字を、「除外指定語」という。検索ワードに除外指定語が含まれている場合、検索ワードのうち、除外指定語を除いた部分が、キーワードとなる。しかしながら、この場合は、商品名及び商品説明の何れにも、除外指定語が除かれたキーワードを含まないことが、検索条件である。つまり、検索条件に対して否定の論理演算が行われる。例えば、検索ワードが、「XXXを除く」である場合、商品名及び商品説明の何れにも「XXX」を含まない商品が検索される。なお、「除く」の前にある「を」は、キーワードと除外指定語とを接続する助詞であるので、このような助詞も除かれる。除外指定語は、本発明における除外を表す表現の一例である。
[2−2.商品価格]
ユーザは、ユーザが検索したい商品が有するべき属性の内容を表す語を、検索ワードとして入力することができる。各商品は、複数の属性を有する。そして、商品の属性は、複数の区分に分類されている。属性の区分としては、例えば、商品名、販売元の店舗、商品価格、ジャンル等がある。属性の区分を、属性の項目ともいう。
ユーザは、日本の通貨単位を表す文字である「円」を含む数字を、検索ワードとして入力することにより、検索ワードが表す金額が、商品価格に対する検索条件として指定される。例えば、検索ワードが「1000円」である場合、商品価格が1000円であることが、検索条件となる。このとき、ユーザは、例えば、「価格1000円」というように、属性の区分を表す語を入力しなくてもよい。金額と商品価格とが予め関連付けられているので、商品価格以外に金額で表される属性を商品が有していたとしても、「円」を含む金額の検索ワードは、商品価格を表すと自動的に判定される。商品価格は、本発明における第1区分の一例である。また、「1000円」は、本発明における第1属性語の一例である。
また、ユーザは、金額を表す語を検索ワードとして入力するとき、「以上」、「以下」、「未満」等、範囲を指定する語または大小関係を示す語を検索ワードに含めることができる。このような語を、「範囲指定語」という。検索ワードが、金額を表す語と範囲指定語とを含む場合、検索ワードが表す金額の範囲に商品価格が含まれていることが、検索条件となる。範囲指定語は、本発明における値の範囲を指定する表現の一例である。
なお、本実施形態においては、検索条件を指定可能な属性の区分を商品価格としているが、他の区分の属性についても検索条件の指定が可能となっていてもよい。
[2−3.ジャンル]
商品は、商品のジャンルを属性として有する。各商品は、それぞれ何らかのジャンルに分類されている。ユーザは、商品のジャンルの名称を、検索ワードとして入力することができる。ジャンルの名称を、「ジャンル名」という。しかしながら、検索ワードとしてジャンル名が入力された場合であっても、ジャンル名が表すジャンルが、商品のジャンルに対する検索条件としては用いられない。この場合、検索ワードは、キーワード検索におけるキーワードとして用いられる。その理由は、以下の通りである。
店舗が、電子商店街に商品の情報を登録するとき、ジャンルの情報も登録する。このとき、店舗は、任意のジャンルを設定することができる。従って、実際にはあるジャンルに属する商品が、必ずしもそのジャンルが設定されて登録されるとは限らない。つまり、ジャンルが検索条件として指定されたとしても、ユーザが望むジャンルに属する商品が全て検索されるとは限らない。その一方で、商品名や商品説明には、実際のジャンルの名称が含まれている場合が多い。そこで、ジャンル名を表す検索ワードが、キーワードとして用いられる。また、検索ワードが表すジャンルに関連する商品を検索することもできる。なお、検索ワードが表すジャンルを、商品のジャンルに対する検索条件として用いられてもよい。この場合についての詳細については後述する。ジャンルは、本発明における第2区分の属性の一例である。また、ジャンル名は、本発明における第2属性語の一例である。
ただし、ジャンルを表す検索ワードと、ジャンルを表さない単なるキーワードとしての検索ワードとでは、区別して処理される部分がある。それは、各検索ワードに対応する検索条件を組み合わせるときに用いられる論理演算の方法である。
ここで、商品のジャンルの詳細について説明する。商品のジャンルは、商品を、例えば種類、性質、用途等で分類したときに、同じような種類、性質、用途等の商品が属する範囲、区分またはカテゴリーである。商品のジャンルは、木構造で階層的に定義されている。この木構造を、「ジャンル木」という。具体的に、ジャンル木の各ノードが、ジャンルに相当する。ノードの深さが、そのノードに相当するジャンルのレベル(階層)に相当する。ノードの深さは、根に位置するノードからの距離である。
根に位置するノードを、「根ノード」という。ジャンル木において、根ノードには、ジャンルトップというジャンルが便宜的に定義されている。レベルの値が大きいほど、レベルとしての深さが深く、レベルの値が小さいほど、レベルとしての深さが浅い。ジャンルトップは、レベル0のジャンルである。ジャンルトップに対して、子ノードに相当するジャンルがレベル1のジャンルである。レベル1のジャンルが、実質的に最上位のジャンルである。レベル1のジャンルとしては、例えば、「水・ソフトドリンク」、「美容・コスメ・香水」、「ペット・ペットグッズ」、「レディースファッション」、「メンズファッション」等がある。レベル1の各ジャンルに対しては、子ノードに相当するジャンルが、レベル2のジャンルとして定義されている。ここで、あるジャンルG1の子ノードに相当するジャンルG11を、ジャンルG1の「子ジャンル」という。子ジャンルを、サブジャンルともいう。また、このときのジャンルG1を、ジャンルG11の「親ジャンル」という。子ジャンルは、親ジャンルを更に複数に区分したときに、同じような商品が属する範囲である。従って、子ジャンルは親ジャンルに属する。
また、あるジャンルに対して、子孫のノードに相当するジャンルを、「子孫ジャンル」という。例えば、ジャンルG111がジャンルG11の子ジャンルであるとする。この場合、ジャンルG11及びG111は、ジャンルG1の子孫ジャンルである。なお、ジャンルG1自身は、ジャンルG1の子孫ジャンルではないものとする。また、あるジャンルに対して、祖先のノードに相当するジャンルを、「祖先ジャンル」という。ジャンルG1及びジャンルG11は、ジャンルG111の祖先ジャンルである。なお、ジャンルG111自身は、ジャンルG111の祖先ジャンルではないものとする。
あるジャンルが子ジャンルを有するとき、通常複数の子ジャンルが定義されている。例えば、「水・ミネラルウォーター」の子ジャンルとして、例えば、「水・ミネラルウォーター」、「ソフトドリンク」及び「コーヒー・ココア」等が定義されている。同一の親ジャンルに属するジャンル同士を、兄弟ジャンルという。例えば、「水・ミネラルウォーター」、「ソフトドリンク」及び「コーヒー・ココア」は、互いに兄弟ジャンルである。レベル2以降のジャンルについては、必要に応じて子ジャンルが定義されている。
また、各レベルのジャンルは、それぞれ商品の属性の内容を表すともいえる。そして、互いに兄弟である複数のジャンルは、同一の区分の属性において互いに異なる内容を示すともいえる。例えば、レベル1のジャンルは、商品の大枠のジャンルという属性の区分を示していると考えることができる。また、「水・ミネラルウォーター」、「ソフトドリンク」及び「コーヒー・ココア」は、それぞれ、飲料の種類という区分の属性の内容である。また、「水・ミネラルウォーター」の子ジャンルとして、例えば、「AAAAA」、「BBBBB」、「CCCCC」という銘柄が定義されている。これらは、水またはミネラルウォーターの銘柄という区分の属性の内容である。そして、例えば、「AAAAA」のジャンルに属する商品は、水またはソフトドリンクであるという属性と、水またはミネラルウォーターであるという属性と、銘柄がAAAAAであるという属性と、を有すると考えることができる。各レベルのジャンルが如何なる区分の属性に対応するかは、例えば、ジャンルごとに定められている。
[2−4.複数の検索条件の組み合わせ]
電子商店街サーバ1は、入力された各検索ワードに対応する検索条件を組み合わせて、最終的な検索条件を示す検索式を生成する。検索式においては、検索ワードに対応する検索条件同士が論理演算子で結合される。各検索ワードに対応する検索条件が組み合わせられるとき、通常は、論理積で組み合わせられる。例えば、検索条件C1と検索条件C2とがある場合、検索条件C1とC2との両方を満たすことが、検索条件となる。しかしながら、ジャンル名を表す検索ワードが複数ある場合、その複数の検索ワードの間では、ジャンル木において、検索ワードが表すジャンル同士の位置関係に基づいて、論理演算の方法が決定される。
ある1つの検索ワードが表すジャンルが、他の少なくとも1つの検索ワードが表すジャンルの祖先である場合、検索条件同士が論理積で組み合わせられる。このような関係の複数の検索ワードをユーザが指定した場合、ユーザは、祖先の方のジャンルに属する商品の中から、子孫の方のジャンルに属する商品を検索したいと考えている蓋然性があるからである。つまり、ユーザは、複数のジャンルで商品を絞り込みたいと考えている蓋然性がある。なお、親子の関係にある検索ワード同士も、祖先と子孫との関係にある。
複数の検索ワードがそれぞれ表すジャンル同士が兄弟の関係にある場合、検索条件同士が論理和で組み合わせられる。つまり、検索条件C3と検索条件C4とがある場合、検索条件C3とC4とのうち少なくとも何れか一方を満たすことが、検索条件となる。互いに兄弟の関係にある複数のジャンルは、同一の区分の属性において互いに異なる属性の内容を示す。従って、互いに兄弟の関係にあるジャンル同士は、検索条件としては並列または対等の関係にあることを示す。従って、兄弟の関係にあるジャンルのそれぞれに属する商品をそれぞれ検索する必要性があると考えられる。また、このような関係の複数の検索ワードをユーザが指定した場合、ユーザは、各検索ワードが表すジャンルのうち少なくとも何れかのジャンルに属する商品を検索したいと考えている蓋然性があるからである。
ある2つの検索ワードがそれぞれ表すジャンル同士が、祖先と子孫との関係ではなく、且つ、兄弟の関係でもない場合、検索条件同士が論理和で組み合わせられる。これは、ジャンル同士に関連性が見られないため、それぞれのジャンルに属する商品をそれぞれ検索する必要性があると考えられるからである。なお、この場合については、検索条件同士が論理積で組み合わせられてもよい。
以下に、ジャンルを表す検索ワードが複数入力された場合に生成される検索式の具体例を説明する。ここで、論理積の演算子を「*」とし、論理和の演算子を「−」とし、否定の演算子を「−」とする。なお、ここで説明する検索式は、実際に用いられる検索式を簡略化した検索式である。
図3(a)は、ジャンル木の一例を示す図である。図3(a)に示すように、レベル1のジャンルとして、複数のGi(i=1、2、3・・・)がある。例えば、G1とG2はレベル1のジャンルである。また、G1とG2とは互いに兄弟である。レベル2のジャンルとして、複数のGij(j=1、2、3・・・)がある。Gijは、ジャンルiの子ジャンルである。例えば、G11は、G1の子ジャンルである。また、例えば、G23は、G2の子ジャンルである。レベル3のジャンルとして、複数のGijk(k=1、2、3・・・)がある。Gijkは、Gikの子ジャンルである。なお、レベル4以降のジャンルも存在していてもよい。
ここで、ユーザが入力した検索ワードが、図3(b)に示すように、「G1 G13 G113を除く G211 G212 G222」であるとする。この場合、各検索ワードが表すジャンルのうち最下位のレベルであるレベル3のジャンルが特定されて、それぞれのジャンルに対応する検索式としての単項式が生成される。G113、G211、G212及びG222が、レベル3のジャンルである。ここで、「G113を除く」から、検索式「−G113」が生成される。その他のジャンルについては、ジャンルそのものが検索式となる。例えば、G113の検索式は、「G113」となる。次に、兄弟関係が調べられる。G211とG212とは兄弟の関係にある。従って、「G211」と「G212」とが論理和で結合されて、検索式「G211+G212」が生成される。
次に、レベル2のジャンルが特定される。G13が、レベル2のジャンルである。また、G113、G211、G212及びG222のそれぞれの親ジャンルが特定される。G113の親ジャンルはG11である。G211及びG212の親ジャンルはG21である。G222の親ジャンルはG22である。ここで、レベル2のジャンルとレベル3のジャンルとの間で親子関係が調べられる。ここでは、親子関係にあるジャンルはない。次に、レベル2のジャンルの間で兄弟関係が調べられる。G11とG13とは、兄弟の関係にある。そこで、G11に対応する「−G113」と「G13」とが論理和で結合されて、検索式「−G113+G13」が生成される。このように処理されることで、祖先と子孫との関係でもなく且つ兄弟の関係でもないG113とG13とが論理和で組み合わせられる。また、G21とG22とが兄弟の関係にある。そのため、G21に対応する「G211+G212」と、G22に対応する「G222」とが論理和で結合されて、検索式「(G211+G212)+G222」が生成される。この場合も、祖先と子孫との関係でもなく且つ兄弟の関係でもないG211及びG212とG222とが論理和で組み合わせられる。多項式と単項式、または、多項式と多項式とが結合される場合、多項式に対して、デリミタである“(”、“)”が補われる。
次に、レベル1のジャンルが特定される。G1が、レベル1のジャンルである。また、G11及びG13の親ジャンルとして、G1が特定され、G21及びG22の親ジャンルとして、G2が特定される。ここで、レベル1のジャンルとレベル2のジャンルとの間で親子関係が調べられる。G1は、G11及びG13の親ジャンルである。そのため、「G1」とG11及びG13に対応する「−G113+G13」とが論理積で結合されて、検索式「(−G113+G13)*G1」が生成される。「(−G113+G13)*G1」は「−G113*G1+G13*G1」と等価である。従って、親子の関係にあるG1とG13とが論理積で組み合わせられるとともに、祖先と子孫との関係にあるG1とG113とが論理積で組み合わせられる。次に、レベル1のジャンルの間で兄弟関係が調べられる。G1とG2とは兄弟の関係にある。そのため、G1に対応する「(−G113+G13)*G1」と、G2に対応する「(G211+G212)+G222」とが論理和で結合されて、図3(c)に示すように、検索式「((−G113+G13)*G1)+((G211+G212)+G222)」が生成される。これが、ジャンルに関しての最終的な検索式となる。
[2−5.検索式の生成]
次に、実際に検索に用いられる検索式の生成方法について、検索ワードの入力例とともに説明する。電子商店街サーバ1は、入力された複数の検索ワードのそれぞれを、ラベルを付した検索ワードに変換する。そして、電子商店街サーバ1は、ラベルを付した検索ワード同士を論理演算子で結合して、検索式を生成する。
ラベルとしては、検索ワードの属性を示す属性ラベルがある。属性ラベルとして、キーワードを示す「kw:」と、商品価格を示す「pr:」とがある。また、ラベルとして、検索ワードに付加された条件を示す付加条件ラベルがある。付加条件ラベルとして、否定を示す「nt:」がある。つまり、否定は、論理演算子ではなく、ラベルで表される。また、付加条件ラベルとして、範囲指定を示すラベルがある。範囲指定を示すは、「〜以上」を示す「mn:」、「〜以下」を示す「mx:」、「〜より大きい」を示す「:gt」、及び、「〜小さい」を示す「lt:」がある。
[例1]
図4(a)は、検索ワードの入力例である。また、図4(b)は、生成される検索式の一例である。ユーザは、品種がコシヒカリであり、産地がAA以外である米を検索したいとする。また、ユーザは、この条件に追加して、商品価格が2000円以上であり且つ5000円以下である米を検索したいとする。また、ユーザは、上記の条件に追加して、商品説明に「XXX」を含む商品を検索したいとする。そこで、ユーザは、図4(a)に示すように、検索ワード入力欄111に、「コシヒカリ AA産を除く XXX 2000円〜5000円」と入力する。
ここで、商品のジャンルとして、「米」、「コシヒカリ」及び「AA産」があり、「コシヒカリ」は「米」の子ジャンルであり、「AA産」は、「コシヒカリ」の子ジャンルであるとする。つまり、正確には、米のジャンルと、品種がコシヒカリである米のジャンルと、産地がAAであり且つ品種がコシヒカリである米のジャンルとがある。また、「コシヒカリ」の子ジャンルとして、「BB産」、「CC産」等がある。一方、「XXX」はジャンル名ではないとする。
先ず、検索ワード「コシヒカリ」がジャンル名であるため、「kw:コシヒカリ」が生成される。検索ワード「AA産を除く」は、除外指定語である「除く」を含む。そのため、「AA産を除く」から「を除く」が削除される。また、「AA産」がジャンル名である。従って、「kw:nt:AA産」が生成される。また、「XXX」から「kw:XXX」が生成される。
検索ワード「2000円〜5000円」は、日本の通貨の単位語である「円」と、「〜」を含む。単位語を含む検索ワードが、「〜」を含む場合、検索ワードは、「〜」よりも前の部分と「〜」よりも後の部分に分割される。そして、分割後の各検索ワードから「円」が除かれる。また、各検索ワードに、単位語に対応するラベルと、「〜」に対する検索ワードの位置に応じた付加条件ラベルとが付される。ここでは、「pr:mn:2000」と「pr:mx:5000」とが生成される。
次に、ジャンル名の検索ワード同士を結合するための論理演算子が決定される。「コシヒカリ」と「AA産」とは親子関係であるため、論理演算子は、「*」である。従って、「kw:コシヒカリ*kw:nt:AA産」が生成される。次に、ジャンル名の検索ワードと、ジャンル名ではない検索ワードとが「*」で結合される。これは、ユーザが、検索ワードとしてジャンルを指定しなかった場合、そのキーワードで商品を絞り込みたいと考えている蓋然性があるからである。従って、「(kw:コシヒカリ*kw:nt:AA産)*kw:XXX」が生成される。なお、ジャンル名の検索ワードと、ジャンル名ではない検索ワードとが「+」で接続されてもよい。
そして、ジャンル名の検索ワード及びジャンル名ではない検索ワードと、他の検索ワードとが「*」で結合される。これにより、図4(b)に示すように、「((kw:コシヒカリ*kw:nt:AA産)*kw:XXX)*pr:mn:2000*pr:mx:5000」が生成される。これが、検索に用いられる検索式となる。この検索式は、商品名または商品説明の少なくとも何れか一方に「コシヒカリ」及び「AA産」を含む商品であり、且つ、商品名及び商品説明の何れにも「XXX」を含まない商品であり、なお且つ、商品価格が2000円以上であって5000円未満である商品を検索することを意味する。
[例2]
図4(c)は、検索ワードの入力例である。また、図4(d)乃至(f)は、生成される検索式の一例である。ユーザは、A社が製造したデジタルカメラ及びB社が製造したデジタルカメラの両方を検索したいとする。また、ユーザは、この条件に追加して、商品価格が1万円未満であるデジタルカメラを検索したいとする。そこで、ユーザは、図4(c)に示すように、検索ワード入力欄111に、「デジタルカメラ A社 B社 1万円未満」と入力する。
ここで、商品のジャンルとして、「デジタルカメラ」、「A社」及び「B社」があり、「A社」及び「B社」は、それぞれ「デジタルカメラ」の子ジャンルであるとする。つまり、正確には、デジタルカメラのジャンルと、デジタルカメラのうちA社が製造したデジタルカメラのジャンルと、デジタルカメラのうちB社が製造したデジタルカメラのジャンルとがある。
先ず、「kw:デジタルカメラ」、「kw:A社」、「kw:B社」及び「pr:lt:1万」が生成される。次に、「A社」と「B社」とが兄弟関係にあるため、「kw:A社+kw:B社」が生成される。次に、「デジタルカメラ」と、「A社」及び「B社」とが親子関係にあるため、「kw:デジタルカメラ*(kw:A社+kw:B社)」が生成される。そして、図4(d)に示すように、「kw:デジタルカメラ*(kw:A社+kw:B社)*pr:lt:1万」が生成される。
通常は、この検索式が検索に用いられる。しかしながら、複数の検索ワードが表すジャンルの中に兄弟関係にある複数のジャンルが存在する場合には、分配法則に基づいて検索式が分割される。そして、兄弟関係にある複数のジャンルのそれぞれごとに、検索に用いられる検索式が生成される。そして、生成された検索式ごとに検索が行われ、検索式ごとに検索結果が表示される。
図4(d)の検索式においては、「kw:A社」を含む検索式と、「kw:B社」を含む検索式とに分割される。従って、図4(e)に示すように、「kw:デジタルカメラ*kw:A社*pr:lt:1万」が生成されるとともに、図4(f)に示すように、「kw:デジタルカメラ*kw:B社*pr:lt:1万」が生成される。
図4(e)の検索式は、商品名または商品説明の少なくとも何れか一方に「デジタルカメラ」及び「A社」を含む商品であり、且つ、商品価格が1万円未満である商品を検索することを意味する。また、図4(f)の検索式は、商品名または商品説明の少なくとも何れか一方に「デジタルカメラ」及び「B社」を含む商品であり、且つ、商品価格が1万円未満である商品を検索することを意味する。図4(d)の検索式による検索結果と、図4(e)及び図4(f)の検索式による検索結果とは基本的には同じになる。ただし、商品名または商品説明の少なくとも何れか一方に「A社」及び「B社」を含む商品は、図4(e)の検索式による検索結果と、図4(f)の検索式による検索結果との両方に表れる。
図5は、検索結果ページの画面表示例を示す図である。検索結果ページは、商品の検索結果を示すWebページである。図5に示すように、検索結果ページは、検索条件設定領域110、検索結果表示領域120a及び検索結果表示領域120bを含む。
検索条件設定領域110の検索ワード入力欄111には、トップページで入力された検索ワードが入力されている状態で表示されている。ユーザは、検索ワード入力欄111において検索ワードを編集することにより、検索条件を再指定して商品の検索を行うことができる。
検索結果表示領域120a及び120bには、それぞれ、検索された商品の情報の一覧が検索結果として表示される。具体的に、検索結果表示領域120a及び120bには、検索された商品の画像、商品名、価格、店舗名等が商品ごとに表示される。通常、検索結果表示領域は1つのみ表示されるが、複数の検索式を用いて検索が行われた場合、検索結果表示領域が複数表示される。具体的に、検索結果表示領域120aには、図4(e)の検索式による検索結果が表示される。また、検索結果表示領域120bには、図4(f)の検索式による検索結果が表示される。このように、デジタルカメラの製造者別に検索結果が表示される。つまり、デジタルカメラの製造者という区分の属性において、検索結果が製造者ごとに分かれて同時に表示される。そのため、ユーザは、検索結果を製造者間で比較することができる。
ただし、属性の内容別に検索結果表示領域が表示されるには条件がある。例えば、図3(a)に示すように、G211とG212とが兄弟関係にある。しかしながら、図3(c)の検索式では、商品名及び商品説明が「G211」及び「G212」の何れも含まない商品も検索される。これは、G211及びG212に対して祖先でも子孫でもないジャンルがあるからである。そこで、兄弟関係にあるジャンルに対して、祖先でも子孫でもないジャンルのジャンル名が検索ワードとして入力されなかった場合に、複数の検索結果表示領域が表示される。つまり、検索式の中に、兄弟関係にあるジャンルのジャンル名の検索ワードを結合する部分以外で、論理和演算子である「+」が表れていない場合に限り、複数の検索結果表示領域が表示される。
このように、ユーザは、検索ワード入力欄111に、商品の属性の内容を表す検索ワードを入力するだけで、詳細な検索条件を指定することができる。このとき、ユーザは、各検索ワードについて、属性の区分を表す語を付加して入力する必要はない。
なお、ジャンル木においては、互いに異なる複数のジャンルに対して、互いに同一のジャンル名が付与される場合がある。例えば、「A社」は、「デジタルカメラ」の子ジャンルであるとともに、「プリンター」の子ジャンルであるとする。この場合、ジャンルとしては、A社が製造したデジタルカメラのジャンルと、A社が製造したプリンターのジャンルとで、明確に区別される。しかしながら、ユーザが検索ワードとして「A社」と入力した場合、「A社」だけでは、「A社」に対応する1つのジャンルを判別することができない。
そこで、例えば、複数の検索ワードがそれぞれ表すジャンル同士の位置関係に応じて、各検索ワードにジャンルが割り当てられるようにしてもよい。例えば、複数の検索ワードがそれぞれ表すジャンルの間で兄弟関係ができるようなジャンルが優先的に割り当てられる。次に、複数の検索ワードがそれぞれ表すジャンルの間で親子関係ができるようなジャンルが優先的に割り当てられる。次に、複数の検索ワードがそれぞれ表すジャンルの間で祖先と子孫との関係ができるようなジャンルが優先的に割り当てられる。
例えば、検索ワードとして「A社 B社」と入力されたとする。また、「B社」は、「プリンター」の子ジャンルではないとする。「A社」と「B社」とは「デジタルカメラ」の子ジャンルとして互いに兄弟の関係にある。そこで、「A社」に対して、A社が製造するデジタルカメラのジャンルが割り当てられる。また、検索ワードとして「プリンター A社」と入力されたとする。「プリンター」と「A社」とは互いに親子の関係にある。そこで、「A社」に対して、A社が製造するプリンターのジャンルが割り当てられる。
また、「A社 ミネラルウォーター」が入力されたとする。「ミネラルウォーター」は、ジャンルを表すが、「A社」と「ミネラルウォーター」とは、兄弟でもなく且つ祖先と子孫でもないとする。この場合、例えば、「A社」に対して、A社が製造するデジタルカメラのジャンルと、A社が製造するプリンターのジャンルとのうち、何れか一方が割り当てられてもよいし、両方が割り当てられてもよい。両方が割り当てられる場合、電子商店街サーバ1は、例えば、互いに異なるジャンルを表す2つの「A社」が入力されたものとみなして処理を行ってもよい。
[3.電子商店街サーバの構成]
次に、電子商店街サーバ1の構成について、図6及び図7を用いて説明する。
図6は、本実施形態に係る電子商店街サーバ1の概要構成の一例を示すブロック図である。図6に示すように、電子商店街サーバ1は、通信部11と、記憶部12と、入出力インターフェース13と、システム制御部14と、を備えている。そして、システム制御部14と入出力インターフェース13とは、システムバス15を介して接続されている。
通信部11は、ネットワークNWに接続して、ユーザ端末3等との通信状態を制御するようになっている。
記憶部12は、例えば、ハードディスクドライブ等により構成されている。記憶部12は、本発明における語記憶手段及び文字情報記憶手段の一例である。この記憶部12には、会員情報DB12a、ジャンル情報DB12b、商品情報DB12c、除外指定語DB12d、単位語DB12e、範囲指定語DB12f等のデータベースが構築されている。
図7(a)は、会員情報DB12aに登録される内容の一例を示す図である。会員情報DB12aには、ショッピングシステムSに会員登録しているユーザに関する会員情報が登録される。具体的に、会員情報DB12aには、ユーザID、パスワード、ニックネーム、氏名、生年月日、性別、郵便番号、住所、電話番号、電子メールアドレス等のユーザの属性の情報が、ユーザごとに対応付けて登録される。ユーザIDは、ユーザの識別情報である。
図7(b)は、ジャンル情報DB12bに登録される内容の一例を示す図である。ジャンル情報DB12bには、商品のジャンルに関するジャンル情報が登録されている。具体的に、ジャンル情報DB12bには、ジャンルID、ジャンル名、ジャンルのレベル、親ジャンルID及び子ジャンルIDリスト等のジャンルの属性の情報が、ジャンルごとに対応付けて登録される。ジャンルIDは、ジャンルの識別情報である。親ジャンルIDは、ジャンル情報によって定義されるジャンルの親ジャンルのジャンルIDである。子ジャンルIDリストは、ジャンル情報によって定義されるジャンルの子ジャンルのジャンルIDのリストである。子ジャンルIDリストは、ジャンル情報によって定義されるジャンルが子ジャンルを有する場合に設定される。こうして、複数のジャンル情報が木構造で記憶される。ジャンル情報によって、各ジャンルが親ジャンル及び子ジャンルと関連付けられるからである。ジャンル情報は、例えば、電子商店街の管理者等により設定される。具体的に、管理者等が、如何なるジャンルを設けるかや、ジャンルの構造等を決定し、決定された内容に従ってジャンル情報を設定する。
図7(c)は、商品情報DB12cに登録される内容の一例を示す図である。商品情報DB12cには、電子商店街で販売されている商品に関する商品情報が登録される。具体的に、商品情報DB12cには、商品ID、店舗ID、商品コード、ジャンルID、商品名、商品画像のURL(Uniform Resource Locator)、商品説明、商品価格等の商品の属性値が、店舗が販売する商品ごとに対応付けて登録される。属性値は、商品の属性の内容を示す情報である。属性値は、例えば、数値や文字等によって表される情報である。属性値は、属性の区分ごとに登録される。商品IDは、店舗等が、販売する商品を管理するための商品の識別情報である。店舗IDは、商品の販売元の店舗を示す。商品コードは、商品を識別するコード番号である。商品コードとしては、例えば、JAN(Japanese Article Number Code)コード等がある。ジャンルIDは、商品が属するジャンルのジャンルIDである。商品情報には、レベルが最も低いジャンルのジャンルIDが設定される。つまり、最も細分化されたジャンルのジャンルIDが設定される。なお、本実施形態では、ジャンル名として入力された検索ワードは、キーワード検索で用いられる。そのため、ジャンルIDは商品の検索に用いられないので、ジャンルIDは商品情報に含まれていなくてもよい。商品名及び商品説明は、それぞれ一文字以上の文字で表される情報である。商品名及び商品説明は、本発明における文字情報の一例である。
図7(d)は、除外指定語DB12dに登録される内容の一例を示す図である。除外指定語DB12dには、除外指定語が複数登録されている。例えば、除外指定語DB12dには、「除く」、「以外」、「含まない」、「除外」等が登録されている。
図7(e)は、単位語DB12eに登録される内容の一例を示す図である。単位語DB12eには、単位語が登録される。具体的に、単位語DB12eには、単位語及び単位語に対応する属性ラベルが単位語ごとに対応付けて登録されている。例えば、「円」と「pr」とが対応付けて登録されている。このように、単位指定語は、属性の区分と関連付けられる。
図7(f)は、範囲指定語DB12fに登録される内容の一例を示す図である。範囲指定語DB12fには、範囲指定語が複数登録されている。具体的に、範囲指定語DB12fには、範囲指定語及び範囲指定語に対応する付加条件ラベルが範囲指定語ごとに対応付けて登録されている。例えば、「以上」と「mn」、「以下」と「mx」、「より高い」と「gt」、「より安い」と「lt」、「未満」と「lt」、「〜」と「mn;mx」が、それぞれ対応付けて登録されている。なお、「mn;mx」は、検索ワードが2つに分割され、「〜」の前方の検索ワードに「mn」が付加され、「〜」の後方の検索ワードに「mx」が付加されることを示す。
次に、記憶部12に記憶されるその他の情報について説明する。記憶部12には、Webページを表示するためのHTML(HyperText Markup Language)文書、XML(Extensible Markup Language)文書、画像データ、テキストデータ、電子文書等の各種データが記憶されている。また、記憶部12には、管理者等により設定された各種の設定値が記憶されている。
また、記憶部12には、オペレーティングシステム、WWW(World Wide Web)サーバプログラム、DBMS(Database Management System)、電子商取引管理プログラム、検索制御プログラム等の各種プログラムが記憶されている。電子商取引管理プログラムは、電子商店街のWebページの生成、商品の注文に関する処理等の電子商店街に関する処理を実行するためのプログラムである。検索制御プログラムは、本発明における検索プログラムの一例である。検索制御プログラムは、ユーザにより入力された検索ワードに基づいて検索式を生成し、検索式に基づいて商品を検索するためのプログラムである。なお、各種プログラムは、例えば、他のサーバ装置等からネットワークNWを介して取得されるようにしてもよいし、DVD(Digital Versatile Disc)等の記録媒体に記録されてドライブ装置を介して読み込まれるようにしてもよい。
入出力インターフェース13は、通信部11及び記憶部12とシステム制御部14との間のインターフェース処理を行うようになっている。
システム制御部14は、CPU14a、ROM(Read Only Memory)14b、RAM(Random Access Memory)14c等により構成されている。そして、システム制御部14は、CPU14aが、各種プログラムを読み出し実行することにより、本発明における第1判定手段、検索手段、第2判定手段、決定手段及び提供手段として機能するようになっている。
なお、電子商店街サーバ1が、複数のサーバ装置で構成されてもよい。例えば、商品の検索を行うサーバ装置、商品の注文等に関する処理を行うサーバ装置、ユーザ端末3からのリクエストに応じてWebページを送信するサーバ装置、及びデータベースを管理するサーバ装置等が、互いにLAN等で接続されてもよい。
[4.ショッピングシステムの動作]
次に、ショッピングシステムSの動作について、図8乃至図14用いて説明する。
図8は、本実施形態に係る電子商店街サーバ1のシステム制御部14の検索リクエスト受信時処理における処理例を示すフローチャートである。
ユーザ端末3の画面にトップページまたは検索結果ページが表示されている状態において、ユーザは、検索ワード入力欄111に、1または複数の検索ワードを入力する。そして、ユーザは、Enterキー等を入力するか、または、検索ボタン112を選択する。すると、ユーザ端末3は、入力された検索ワードを含む検索リクエストを電子商店街サーバ1へ送信する。検索リクエストは、検索の要求を示すメッセージである。検索リクエスト受信時処理は、電子商店街サーバ1が検索リクエストを受信したときに開始される。
図8に示すように、システム制御部14は、属性判定処理を実行する(ステップS1)。属性判定処理では、検索リクエストに含まれる各検索ワードが表す内容に対応する属性の区分が判定される。属性判定処理の詳細については後述する。
次いで、システム制御部14は、検索式生成処理を実行する(ステップS2)。検索式生成処理では、検索リクエストに含まれる各検索ワードと、属性判定処理における属性の区分の判定結果とに基づいて、検索式が生成される。検索式生成処理の詳細については後述する。
次いで、システム制御部14は、検索処理を実行する(ステップS3)。検索処理では、生成された検索式に基づいて商品の検索が行われる。そして、検索結果を示す検索結果リストが生成される。検索結果リストには、検索された商品の商品IDが登録されている。検索処理の詳細については後述する。
次いで、システム制御部14は、検索結果ページのHTML文書を生成する(ステップS4)。具体的に、システム制御部14は、検索結果リストに登録されている商品IDに対応する商品情報を、商品IDごとに商品情報DB12cから取得する。次いで、システム制御部14は、商品情報に基づいて、検索結果表示領域を表示するためのデータを生成する。そして、システム制御部14は、検索結果表示領域用のデータを含むHTML文書を生成する。ここで、システム制御部14は、検索メイン処理において複数の検索結果リストが生成された場合には、検索結果リストごとに検索結果表示領域用のデータを生成し、生成した各データを含むHTML文書を生成する。ユーザが兄弟関係にある複数のジャンルのジャンル名をそれぞれ検索ワードとして入力した場合に、検索結果リストが複数生成される。例えば、システム制御部14は、検索結果リストごとに、別々のtableタグ内に、検索された各商品の商品名、商品価格、店舗名等の情報を設定する。これらの情報は、本発明における検索対象情報の一例である。
システム制御部14は、検索結果ページのHTML文書を生成すると、このHTML文書を、検索リクエストの送信元のユーザ端末3へ送信する(ステップS5)。システム制御部14は、この処理を終えると、検索リクエスト受信時処理を終了させる。ユーザ端末3は、受信したHTML文書に基づいて、検索結果ページを画面に表示させる。複数の検索結果リストに基づいてHTML文書が生成された場合、例えば、図5に示すように、検索結果ページには、複数の検索結果表示領域が表示される。システム制御部14は、ステップS4及びS5を実行することにより、提供手段として、ジャンル木において互いに兄弟の関係にある複数の検索ワードのそれぞれに応じた検索条件ごとに、検索された商品の情報が分かれて表示されるように、検索された商品の情報をユーザ端末3へ提供する。
図9は、本実施形態に係る電子商店街サーバ1のシステム制御部14の属性判定処理における処理例を示すフローチャートである。
図9に示すように、システム制御部14は、検索リクエストから検索ワードを1つ取得する(ステップS11)。次いで、システム制御部14は、取得した検索ワードの属性区分及び付加条件を初期化する。(ステップS12)。
次いで、システム制御部14は、取得した検索ワードと一致するジャンル名を、ジャンル情報DB12bから検索する(ステップS13)。なお、ジャンル名の中には、「・」で複数の名称を結合したジャンル名がある。この場合、システム制御部14は、複数の名称のうち何れか1つが検索ワードと一致するジャンル名も、検索ワードと一致するジャンル名として検索する。例えば、ジャンル名が「美容・コスメ・香水」である場合、検索ワードが「美容」、「コスメ」、「香水」の何れかであれば、検索ワードとジャンル名とが一致する。
次いで、システム制御部14は、第2判定手段として、検索結果に基づいて、取得した検索ワードと一致するジャンル名があるか否かを判定する(ステップS14)。なお、システム制御部14は、検索ワードに除外指定語が含まれていたとしても、除外指定語が含まれている状態で、検索を行う。これは、除外指定語が含まれるジャンル名がジャンル情報DB12bに登録されている可能性があるからである。また、同様に理由により、システム制御部14は、検索ワードに単位語が含まれていたとしても、単位語が含まれている状態で、検索を行う。
システム制御部14は、検索ワードと一致するジャンル名があると判定した場合には(ステップS14:YES)、取得した検索ワードの属性区分として、ジャンルを設定する(ステップS15)。次いで、システム制御部14は、検索ワードと一致するジャンル名を含むジャンル情報から、ジャンルID及びレベルを取得する(ステップS16)。そして、システム制御部14は、取得したジャンルID及びレベルを、取得した検索ワードに対応付けてRAM14cに記憶させる。なお、システム制御部14は、検索ワードが複数のジャンルのジャンル名と一致する場合、それぞれのジャンルID及びレベルを、RAM14cに記憶させる。
ステップS14において、システム制御部14は、検索ワードと一致するジャンル名がないと判定した場合には(ステップS14:NO)、検索ワードから、除外指定語DB12dに登録されている各除外指定語を検索する(ステップS17)。次いで、システム制御部14は、検索結果に基づいて、検索ワードに何れかの除外指定語が含まれているか否かを判定する(ステップS18)。このとき、システム制御部14は、除外指定語が含まれていると判定した場合には(ステップS18:YES)、取得した検索ワードの付加条件として、否定を設定する(ステップS19)。次いで、システム制御部14は、取得した検索ワードから除外指定語を削除する(ステップS20)。次いで、システム制御部14は、除外指定語が削除された検索ワードと一致するジャンル名を、ジャンル情報DB12bから検索する(ステップS21)。そして、システム制御部14は、第2判定手段として、検索結果に基づいて、除外指定語が削除された検索ワードと一致するジャンル名があるか否かを判定する(ステップS22)。このとき、システム制御部14は、除外指定語が削除された検索ワードと一致するジャンル名があると判定した場合には(ステップS22:YES)、ステップS15に移行する。
システム制御部14は、ステップS18において除外指定語が含まれていないと判定した場合(ステップS18:NO)、または、ステップS22において検索ワードと一致するジャンル名がないと判定した場合には(ステップS22:NO)、図10に示すように、取得した検索ワードから、単位指定語DB12eに登録されている単位指定語を検索する(ステップS51)。なお、単位指定語DB12eには、「円」が登録されているので、システム制御部14は、検索ワードから「円」を検索する。次いで、システム制御部14は、検索結果に基づいて、検索ワードからに「円」が含まれているか否かを判定する(ステップS52)。これにより、システム制御部14は、第1判定手段として、検索ワードが商品価格を表す語であるか否かを判定する。このとき、システム制御部14は、検索ワードに「円」が含まれていると判定した場合には(ステップS52:YES)。取得した検索ワードの属性区分として、商品価格を設定する(ステップS53)。実際には、単位指定語DB12eにおいて「円」と対応付けられている属性ラベル「pr」が設定される。
なお、本実施形態においては、理解の容易のため、「円」を含む検索ワードが、商品価格の内容としての金額を表す検索ワードと判定されている。しかしながら、システム制御部14は、検索ワードをより詳細に解析することによって、金額を表す検索ワードであるか否かを判定してもよい。つまり、システム制御部14は、検索ワードが「円」を含むことを、検索ワードが商品価格を表す語であると判定するための最小限の条件としつつも、他の条件も用いて判定を行ってもよい。例えば、システム制御部14は、検索ワードが、「円」とともに数字を含むか否かを判定してもよい。また、システム制御部14は、検索ワードの文字の形式が、商品価格の表現形式と一致するか否かを判定してもよい。例えば、システム制御部14は、検索ワードが、「0」〜「9」の何れかの文字で始まり、次いで、「0」〜「9」、「千」、「万」等の文字が0回以上続き、その後に「円」が表れる場合に、商品価格を表すと判定してもよい。
次いで、システム制御部14は、取得した検索ワードから「円」を削除する(ステップS54)。次いで、システム制御部14は、「円」を削除した検索ワードから、範囲指定語DB12fに登録されている各範囲指定語を検索する(ステップS55)。次いで、システム制御部14は、検索結果に基づいて、検索ワードに何れかの範囲指定語が含まれているか否かを判定する(ステップS56)。このとき、システム制御部14は、範囲指定語が含まれていると判定した場合には(ステップS56:YES)、取得した検索ワードの付加条件として、検索ワードに含まれる範囲指定語に対応する大小関係を設定する(ステップS57)。実際には、範囲指定語DB12fにおいて、検索ワードに含まれる範囲指定語に対応付けられている付加条件ラベルが設定される。次いで、システム制御部14は、検索ワードから範囲指定語を削除する(ステップS58)。
なお、システム制御部14は、範囲指定語が「〜」である場合、検索ワードを「〜」の前の部分と後の部分とに分割し、前の部分の付加条件ラベルとして「mn」を設定し、後の部分の付加条件ラベルとして「mx」を設定する。
ステップS52において、システム制御部14は、検索ワードに「円」が含まれていないと判定した場合には(ステップS52:NO)、取得した検索ワードの属性区分として、キーワードを設定する(ステップS59)。
システム制御部14は、ステップS56において検索ワードに範囲指定語が含まれていないと判定した場合(ステップS56:NO)、あるいは、ステップS16、S58またはS59の処理を終えると、検索リクエストの中にまだ取得していない検索ワードがあるか否かを判定する(ステップS60)。このとき、システム制御部14は、まだ取得していない検索ワードがあると判定した場合には(ステップS60:YES)、まだ取得していない検索ワードのうち1つを取得する(ステップS61)。次いで、システム制御部14は、ステップS12に移行する。システム制御部14は、ステップS12〜S61の処理を繰り返すことにより、検索リクエストに含まれる各検索ワードに対して属性区分を判定する。そして、システム制御部14は、全ての検索ワードを取得したと判定した場合には(ステップS60:NO)、属性判定処理を終了させる。
図11は、本実施形態に係る電子商店街サーバ1のシステム制御部14の検索式生成処理における処理例を示すフローチャートである。
図11に示すように、システム制御部14は、属性区分が判定された検索ワードの中に、属性区分がジャンルである検索ワードがあるか否かを判定する(ステップS101)。このとき、システム制御部14は、属性区分がジャンルである検索ワードがあると判定した場合には(ステップS101:YES)、属性区分がジャンルである検索ワードに対応付けられたレベルのうち、最下位のレベルを、レベル番号Lに設定する(ステップS102)。図3の例では、レベル3が最下位のレベルである。
次いで、システム制御部14は、属性区分がジャンルである検索ワードのうち、対応付けられているレベルがLである検索ワードがあるか否かを判定する(ステップS103)。なお、レベル番号Lが最下位のレベルの番号である場合、対応付けられているレベルの番号がLである検索ワードは必ず存在する。図3の例では、「G113」、「G211」、「G212」及び「G222」に対して、最下位のレベルが対応付けられている。このとき、システム制御部14は、対応付けられているレベルがLである検索ワードがあると判定した場合には(ステップS103:YES)、対応付けられているレベルの番号がLである各検索ワードに、キーワードを示す属性ラベルと、属性判定処理で設定された付加条件に対応する付加条件ラベルとを接続して、単項式を生成する(ステップS104)。例えば、入力された検索ワードが「AA産を除く」であるとする。この場合、検索ワードから「を除く」が削除されて、付加条件は否定となる。そのため、単項式は、「kw:nt:AA産」となる。入力された検索ワードが「AA産」である場合、単項式は、「kw:AA産」となる。
次いで、システム制御部14は、生成した各単項式について、単項式の元となった検索ワードに対応付けられたジャンルIDを、レベルLのジャンルIDとして単項式に対応付ける(ステップS105)。次いで、システム制御部14は、レベル番号Lが、属性区分がジャンルである検索ワードに対応付けられたレベルのうち最下位のレベルを示すか否かを判定する(ステップS106)。このとき、システム制御部14は、レベル番号Lが最下位のレベルを示すと判定した場合には(ステップS106:YES)、各式に対応付けられたレベルLのジャンルIDが示すジャンルの親ジャンルのジャンルIDを取得する(ステップS107)。具体的に、システム制御部14は、ジャンル情報DB12bから、ジャンルIDに対応する親ジャンルIDを取得する。次いで、システム制御部14は、親のジャンルのジャンルIDが互いに一致する複数の式があるか否かを判定する(ステップS108)。このとき、システム制御部14は、親のジャンルのジャンルIDが互いに一致する複数の式があると判定した場合には(ステップS108:YES)、その複数の式を論理和演算子で結合して新しい式を生成する(ステップS109)。親ジャンルが一致する複数のジャンルは、互いに兄弟の関係にあるからである。そして、システム制御部14は、新しい式を検索式の生成に用いる式とし、新しい式の生成元となった複数の式を検索式の生成に用いる式から除外する。図3の例では、G211とG212の親ジャンルが一致するので、「G211+G212」が新しく生成される。
次いで、システム制御部14は、ステップS107において各式について取得した親ジャンルのジャンルIDを、それぞれレベルL−1のジャンルIDとして、対応する式に対応付ける(ステップS110)。図3の例では、「−G113」にG11のジャンルID、「G211+G212」にG21のジャンルID、「G222」にG22のジャンルIDが対応付けられる。
次いで、システム制御部14は、レベル番号Lが1であるか否かを判定する(ステップS111)。このとき、システム制御部14は、レベル番号Lが1ではないと判定した場合には(ステップS111:NO)、レベル番号Lから1を減算する(ステップS112)。次いで、システム制御部14は、ステップS103に移行する。
ステップS103〜S105において、システム制御部14は、レベル番号Lが最下位のレベルを示す場合と同様に処理を行う。図3の例では、「G13」に対して、レベル2が対応付けられている。そのため、単項式「G13」が生成される。また、「G13」に、G13のジャンルIDが対応付けられる。
次いで、システム制御部14は、ステップS106において、レベル番号Lが最下位のレベルを示さないと判定した場合には(ステップS106:NO)、今回生成した単項式と、以前に生成済みの式との間で、対応付けられているレベルLのジャンルIDが一致するものがあるか否かを判定する(ステップS113)。つまり、システム制御部14は、生成済みの式に対応するレベルL+1のジャンルの中に、今回生成した単項式に対応するレベルLのジャンルを親ジャンルとするものがあるか否かを判定する。図3の例において、レベル2の段階では、そのような式は存在しない。このとき、システム制御部14は、今回生成した単項式と、以前に生成済みの式との間で、対応付けられているレベルLのジャンルIDが一致するものがあると判定した場合には(ステップS113:YES)、今回生成した単項式と、以前に生成済みの式との間で、レベルLのジャンルIDが互いに一致する複数の式を論理積演算子で結合して新しい式を生成する(ステップS114)。そして、システム制御部14は、新しい式を検索式の生成に用いる式とし、新しい式の生成元となった複数の式を検索式の生成に用いる式から除外する。
システム制御部14は、今回生成した単項式と、以前に生成済みの式との間で、対応付けられているレベルLのジャンルIDが一致するものがないと判定した場合(ステップS113:NO)、または、ステップS114の処理を終えた場合には、ステップS107に移行する。
なお、システム制御部14は、ステップS103において、対応付けられているレベルがLである検索ワードがないと判定した場合には(ステップS103:NO)、ステップS104〜S106の処理を実行せずに、ステップS107に移行する。
ステップS107〜S111において、システム制御部14は、レベル番号Lが最下位のレベルを示す場合と同様に処理を行う。図3の例では、「−G113」に対して、G13の親ジャンルであるG1のジャンルIDが取得される。また、「G211+G212」に対して、G21の親ジャンルであるG2のジャンルIDが取得される。また、「G222」に対して、G22の親ジャンルであるG2のジャンルIDが取得される。また、「G13」に対して、G13の親ジャンルであるG1のジャンルIDが取得される。そして、「−G113」と「G13」とで、取得されたジャンルIDが一致するため、「−G113+G13」が生成される。この式のレベル1のジャンルIDとして、G1のジャンルIDが対応付けられる。また同様に、「(G211+G212)+G222」が生成される。この式のレベル1のジャンルIDとして、G2のジャンルIDが対応付けられる。
このようにして、システム制御部14は、レベル番号Lが1になるまで、ステップS102〜114の処理を繰り返す。図3の例では、レベル番号Lが1となったとき、ステップS103〜S105において、単項式「G1」が生成される。また、「G1」に、G1のジャンルIDが対応付けられる。また、ステップS113において、今回生成された単項式である「G1」と、生成済みの式である「−G113+G13」とで、レベル1のジャンルIDが一致する。従って、ステップS114において、「(−G113+G13)*G1」が生成される。また、レベル1の親ジャンルであるレベル0のジャンルは、ジャンルトップのみである。従って、ステップS108においては、全ての式において親ジャンルのジャンルIDが一致するため、ステップS109において、「((−G113+G13)*G1)+((G211+G212)+G222)」が生成される。
このように、システム制御部14は、決定手段として、ジャンルを表す検索ワードが複数ある場合、ジャンル木におけるこれらの検索ワード同士の位置関係に基づいて、各検索ワードに応じた検索条件を組み合わせる方法を決定する。具体的に、システム制御部14は、ステップS108及びS109において、ある複数の検索ワードがジャンル木において互いに兄弟の関係である場合、その複数の検索ワードのそれぞれに応じた検索条件を互いに論理和で組み合わせることを決定する。また、システム制御部14は、ある複数の検索ワードがジャンル木において互いに兄弟の関係でもなく、且つ、祖先と子孫との関係でもない場合、その複数の検索ワードのそれぞれに応じた検索条件を互いに論理和で組み合わせることを決定する。また、システム制御部14は、ステップS113及びS114において、ある検索ワードが他の少なくとも1つの検索ワードの祖先である場合、祖先の方の検索ワードに応じた検索条件と、子孫の方の検索ワードに応じた検索条件とを論理積で組み合わせることを決定する。
システム制御部14は、ステップS111において、レベル番号Lが1であると判定した場合には(ステップS111:YES)、属性区分が判定された検索ワードのうち、属性区分がジャンルではない各検索ワードに、属性区分に対応する属性ラベルと、付加条件に対応する付加条件ラベルとを接続して、単項式を生成する(ステップS115)。例えば、入力された検索ワードが「XXX」である場合、「kw:XXX」が生成される。また例えば、入力された検索ワードが「1000円より安い」である場合、「pr:lt:1000」が生成される。
次いで、システム制御部14は、ステップS115において生成された各単項式と、ステップS102〜S114において最終的に生成した式とを、論理積演算子で接続して、検索式を生成する(ステップS116)。システム制御部14は、この処理を終えると、検索式生成処理を終了させる。
なお、システム制御部14は、属性判定処理において検索ワードが複数のジャンルのジャンル名と一致する場合、上述したように、この検索ワードが表す複数のジャンルと他の検索ワードが表すジャンルとの関係が兄弟関係や親子関係等の関係になるように検索ワードにジャンルを割り当ててもよい。そして、システム制御部14は、ジャンルの割り当てに基づいて検索式を生成してもよい。
図12は、本実施形態に係る電子商店街サーバ1のシステム制御部14の検索処理における処理例を示すフローチャートである。
図12に示すように、システム制御部14は、属性判定処理において属性区分が判定された検索ワードの中に、属性区分がジャンルである検索ワードがあるか否かを判定する(ステップS201)。このとき、システム制御部14は、属性区分がジャンルである検索ワードがないと判定した場合には(ステップS201:NO)、検索メイン処理を実行する(ステップS204)。検索メイン処理では、1個の検索式に対応した検索が行われる。この場合、検索式生成処理で生成された検索式そのものが、検索メイン処理で用いられる。
一方、システム制御部14は、属性区分がジャンルである検索ワードがあると判定した場合には(ステップS201:YES)、属性区分がジャンルである検索ワードの中に、対応するジャンルが兄弟関係にある複数の検索ワードがあるか否かを判定する(ステップS202)。この判定は、各検索ワードに対応付けられたジャンルIDと、ジャンル情報DB12bとに基づいて行われる。このとき、システム制御部14は、対応するジャンルが兄弟関係にある複数の検索ワードがないと判定した場合には(ステップS202:NO)、ステップS204に移行する。
一方、システム制御部14は、対応するジャンルが兄弟関係にある複数の検索ワードがあると判定した場合には(ステップS202:YES)、属性区分がジャンルである検索ワードの中に、兄弟関係にある複数の検索ワードに対して祖先でも子孫でもない検索ワードがあるか否かを判定する(ステップS203)。この判定は、各検索ワードに対応付けられたジャンルIDと、ジャンル情報DB12bとに基づいて行われる。このとき、システム制御部14は、兄弟関係にある複数の検索ワードに対して祖先でも子孫でもない検索ワードがあると判定した場合には(ステップS203:YES)、ステップS204に移行する。システム制御部14は、ステップS204を実行すると、検索処理を終了させる。
一方、システム制御部14は、兄弟関係にある複数の検索ワードに対して祖先でも子孫でもない検索ワードがないと判定した場合には(ステップS203:NO)、兄弟関係にある複数の検索ワードのうち1つを選択する(ステップS205)。次いで、システム制御部14は、検索式生成処理において生成された検索式から、兄弟関係にある複数の検索ワードのうち選択した検索ワード以外の検索ワードを削除した検索式を生成する(ステップS206)。例えば、図4(d)〜図4(f)の例において、「A社」が選択された場合、図4(e)に示す検索式が生成される。次いで、システム制御部14は、検索メイン処理を実行する(ステップS207)。この場合、ステップS206で生成された検索式が、検索メイン処理で用いられる。
次いで、システム制御部14は、兄弟関係にある複数の検索ワードの中にまだ選択していない検索ワードがあるか否かを判定する(ステップS208)。このとき、システム制御部14は、まだ選択していない検索ワードがあると判定した場合には(ステップS208:YES)、選択していない検索ワードのうち1つを選択する(ステップS209)。次いで、システム制御部14は、ステップS206に移行する。システム制御部14は、ステップS206〜S209の処理を繰り返すことにより、兄弟関係にある複数の検索ワードのそれぞれごとに商品を検索する。そして、システム制御部14は、全ての検索ワードを選択したと判定した場合には(ステップS208:NO)、検索処理を終了させる。
図13及び図14は、本実施形態に係る電子商店街サーバ1のシステム制御部14の検索メイン処理における処理例を示すフローチャートである。
図13に示すように、システム制御部14は、検索式を、逆ポーランド記法の検索式に変換する(ステップS301)。例えば、図4(b)の式は、「kw:コシヒカリkw:nt:AA産*kw:XXX*pr:mn:2000*pr:mx:5000*」に変換される。検索式を逆ポーランド記法で表す理由は、検索の処理を簡易に行うためである。つまり、検索式の先頭から、要素を順次取得して、取得した要素の順に処理を実行すれば、検索式に応じた検索の処理が行えるからである。ここで、要素とは、単項式及び論理演算子である。単項式は、ラベルが付加された検索ワードである。図4(b)の例では、始めに「kw:コシヒカリ」を用いて商品が検索され、次に「kw:nt:AA産」を用いて商品が検索される。次に、「*」に基づいて、「kw:コシヒカリ」で検索された商品の集合と、「kw:nt:AA産」で検索された商品の集合の積集合が抽出される。次に、「pr:mn:2000」を用いて商品が検索され、次に、「*」に基づいて、先に抽出された商品の集合と、「kw:nt:AA産」で検索された商品の集合との積集合が抽出される。以下、同様に処理が行われる。
システム制御部14は、検索式を変換すると、検索結果リストのスタックを初期化する(ステップS302)。このスタックは、検索結果リストを後入れ先出しで格納するためのデータ構造である。
次いで、システム制御部14は、検索式から先頭の要素を取得する(ステップS303)。次いで、システム制御部14は、取得した要素が単項式であるか否かを判定する(ステップS304)。このとき、システム制御部14は、単項式であると判定した場合には(ステップS304:YES)、取得した要素に含まれる検索ワードの属性区分がキーワードであるか否かを判定する(ステップS305)。つまり、システム制御部14は、取得した要素が「kw:」を含むか否かを判定する。このとき、システム制御部14は、属性区分がキーワードであると判定した場合には(ステップS305:YES)、取得した要素に含まれる検索ワードの付加条件が否定であるか否かを判定する(ステップS306)。つまり、システム制御部14は、取得した要素が「nt:」を含むか否かを判定する。このとき、システム制御部14は、付加条件が否定ではないと判定した場合には(ステップS306:NO)、商品名または商品説明の少なくとも何れか一方に、取得した要素に含まれる検索ワードを含む商品情報を、商品情報DB12cから検索する(ステップS307)。こうして、システム制御部14は、検索手段として、金額を表す語であるとは判定されなかった検索ワードをキーワードとして用いて検索を行う。
一方、システム制御部14は、付加条件が否定であると判定した場合には(ステップS306:YES)、商品名及び商品説明の何れにも、取得した要素に含まれる検索ワードを含まない商品情報を、商品情報DB12cから検索する(ステップS308)。こうして、システム制御部14は、検索手段として、入力された検索ワードが除外指定語を含む場合、その検索ワードに応じた条件の否定を検索条件として用いて検索を行う。
ステップS305において、システム制御部14は、属性区分がキーワードではないと判定した場合には(ステップS305:NO)、取得した要素に含まれる検索ワードの属性区分が商品価格であるか否かを判定する(ステップS309)。つまり、システム制御部14は、取得した要素が「pr:」を含むか否かを判定する。このとき、システム制御部14は、属性区分が商品価格ではないと判定した場合には(ステップS309:NO)、ステップS358に移行する。
一方、システム制御部14は、属性区分が商品価格であると判定した場合には(ステップS309:YES)、取得した要素に含まれる検索ワードを数値にバイナリ変換する(ステップS310)。次いで、システム制御部14は、取得した要素に含まれる検索ワードの付加条件が大小関係であるか否かを判定する(ステップS311)。つまり、システム制御部14は、取得した要素が、「mn:」「mx:」、「gt:」及び「lt:」の何れかを含むか否かを判定する。このとき、システム制御部14は、付加条件が大小関係ではないと判定した場合には(ステップS311:NO)、商品価格が、変換された数値と一致する商品情報を、商品情報DB12cから検索する(ステップS312)。こうして、システム制御部14は、検索手段として、金額を表す語であると判定された検索ワードを商品価格の検索条件として用いて、商品を検索する。
一方、システム制御部14は、付加条件が大小関係であると判定した場合には、商品価格が、変換された数値と、取得した要素に含まれる付加条件ラベルが示す大小関係とに応じた範囲内である商品情報を、商品情報DB12cから検索する(ステップS313)。例えば、数値がKであるとする。また、付加条件ラベルが「mn:」であるとする。この場合、システム制御部14は、商品価格がK円以上である商品情報を検索する。また、システム制御部14は、付加条件ラベルが「mx:」である場合、商品価格がK円以下である商品情報を検索する。また、システム制御部14は、付加条件ラベルが「gt:」である場合、商品価格がK円よりも高い商品情報を検索する。また、システム制御部14は、付加条件ラベルが「lt:」である場合、商品価格がK円よりも安い商品情報を検索する。こうして、システム制御部14は、入力された検索ワードが範囲指定語を含む場合には、検索手段として、入力された検索ワードが表す金額の範囲に商品価格が含まれる商品を検索する。
システム制御部14は、ステップS307、S308、S312またはS313の処理を終えると、検索した各商品情報から商品IDを取得し、取得した商品IDを登録した検索結果リストを生成する。そして、システム制御部14は、検索リストをスタックに格納する(ステップS314)。次いで、システム制御部14は、ステップS358に移行する。
ステップS304において、システム制御部14は、取得した要素が単項式ではないと判定した場合には(ステップS304:NO)、図14に示すように、取得した要素が論理和演算子であるか否かを判定する(ステップS351)。このとき、システム制御部14は、取得した要素が論理和演算子であると判定した場合には(ステップS351:YES)。スタックから検索結果リストを2つ取得する(ステップS352)。次いで、システム制御部14は、取得した2つの検索結果リストのうち少なくとも何れか一方に登録されている商品IDを抽出する。そして、システム制御部14は、抽出した各商品IDを登録した検索リストを新しく生成する(ステップS353)。
一方、システム制御部14は、取得した要素が論理和演算子ではないと判定した場合には(ステップS351:NO)、取得した要素が論理積演算子であるか否かを判定する(ステップS354)。このとき、システム制御部14は、取得した要素が論理積演算子であると判定した場合には(ステップS354:YES)。スタックから検索結果リストを2つ取得する(ステップS355)。次いで、システム制御部14は、取得した2つの検索結果リストの何れにも登録されている商品IDを抽出する。そして、システム制御部14は、抽出した各商品IDを登録した検索リストを新しく生成する(ステップS356)。
システム制御部14は、ステップS353または356の処理を終えると、新しく生成された検索結果リストをスタックに格納する(ステップS357)。次いで、システム制御部14は、検索式からまだ取得していない要素があるか否かを判定する(ステップS358)。このとき、システム制御部14は、まだ取得していない要素があると判定した場合には(ステップS358:YES)、検索式から次の要素を取得する(ステップS359)。次いで、システム制御部14は、ステップS304に移行する。システム制御部14は、ステップS304〜S314、S351〜S359の処理を繰り返すことにより、検索式の先頭から順次要素を取得し、取得した要素に応じた処理を実行する。そして、システム制御部14は、全ての要素を取得したと判定した場合には(ステップS358:NO)、スタックから検索結果リストを取得する(ステップS360)。この検索結果リストが、最終的な検索結果を示す。システム制御部14は、この処理を終えると、検索メイン処理を終了させる。
以上説明したように、本実施形態によれば、電子商店街サーバ1のシステム制御部14が、検索ワード入力欄111に入力された複数の検索ワードのそれぞれごとに、検索ワードが、予め定められた区分の属性の内容を表す語であるか否かを、その検索ワード自体に基づいて判定し、予め定められた区分の属性の内容を表す語であると判定された検索ワードが表す内容を、予め定められた区分の属性の検索条件として用いて、商品を検索する。従って、ユーザは、属性の内容を表す検索ワードを含む複数の検索ワードを1つの検索ワード入力欄111に入力することで、属性の区分を指定する操作をしなくても、予め定められた区分の属性の検索条件を指定することができる。
また、システム制御部14が、検索ワードが「円」を含むことを少なくとも条件として、その検索ワードが金額を表す語であると判定し、金額を表す語であると判定された検索ワードが表す金額を、商品価格の検索条件として用いる。従って、ユーザは、「円」を含む検索ワードを入力することにより、商品価格の検索条件を指定することができる。
また、システム制御部14が、金額を表す語であると判定された検索ワードが範囲指定語を含む場合には、入力された検索ワードが表す金額の範囲に商品価格が含まれる商品を検索する。従って、ユーザは、「円」及び範囲を指定する表現を含む検索ワードを入力することにより、商品価格の検索条件として、商品価格の範囲を指定することができる。
また、システム制御部14が、検索ワード入力欄111に入力された複数の検索ワードのそれぞれの検索ワードが、ジャンル名をジャンルごとに木構造で記憶する記憶部12に記憶された複数のジャンル名のうち少なくとも1つのジャンル名と一致するか否かを判定し、一致すると判定された検索ワードが複数ある場合、ジャンル木におけるこれらの検索ワード同士の位置関係に基づいて、各検索ワードに応じた検索条件を組み合わせる方法を決定する。従って、ユーザは、ジャンル名を複数入力することで、各ジャンル名に応じた検索条件の組み合わせ方法を指定することができる。つまり、ユーザは、検索ワード入力欄111への入力操作とは別の操作を行わなくても、検索条件の組み合わせ方法を指定することができる。
また、システム制御部14が、ある複数の検索ワードがジャンル木において互いに兄弟の関係である場合、その複数の検索ワードのそれぞれに応じた検索条件を互いに論理和で組み合わせることを決定する。従って、ユーザは、互いに兄弟の関係にある複数のジャンル名を入力することにより、検索条件を論理和で組み合わせることを指定することができる。
また、システム制御部14が、ジャンル木において互いに兄弟の関係にある複数の検索ワードのそれぞれに応じた検索条件ごとに商品を検索し、検索された商品の情報が兄弟の関係にある複数の検索ワードのそれぞれの検索ワードごとに分かれて表示されるように、検索された商品の情報を含むHTML文書をユーザ端末3へ送信する。従って、互いに兄弟の関係にある複数のジャンル名のそれぞれに応じた検索結果が分かれて表示される。そのため、兄弟の関係にあるジャンル名の間で検索結果の比較が容易となる。
また、システム制御部14が、ある検索ワードが他の少なくとも1つの検索ワードの祖先である場合、祖先の方の検索ワードに応じた検索条件と、子孫の方の検索ワードに応じた検索条件とを論理積で組み合わせることを決定する。従って、ユーザは、互いに祖先と子孫との関係にある複数のジャンル名を入力することにより、検索条件を論理積で組み合わせることを指定することができる。
また、システム制御部14が、ジャンル名と一致すると判定された検索ワードをキーワードとして、商品名及び商品説明を商品ごとに記憶する記憶部12に記憶された商品名及び商品説明の少なくとも何れか一方にキーワードを含むことを検索条件とする。従って、商品情報に含まれているジャンルIDが示すジャンルが、商品の本来のジャンルとは異なる場合であっても、ユーザが検索ワードとして入力したジャンル名が表すジャンルに属する商品を検索することができる。つまり、店舗が商品情報の登録時に商品のジャンルを正確に設定していなかったとしても、検索ワードが表すジャンルに属する商品を検索することができる。また、商品情報がジャンルIDを含まないように商品情報を構成した場合であっても、検索ワードが表すジャンルに属する商品を検索することができる。
また、システム制御部14が、入力された検索ワードが除外指定語を含む場合、その検索ワードに応じた条件の否定を検索条件として用いて検索を行う。従って、ユーザは、除外の表現を含む検索ワードを入力することにより、否定の検索条件を指定することができる。具体的に、検索ワードから除外指定語を除いた部分をキーワードとして、商品名及び商品説明の何れにもそのキーワードを含まない商品を検索することができる。
また、システム制御部14が、予め定められた区分の属性の内容を表す語であるとは判定されなかった検索ワードをキーワードとして、記憶部12に記憶された商品名及び商品説明の少なくとも何れか一方にキーワードを含むことを検索条件とする。従って、ユーザは、予め定められた区分の属性の内容を表す検索ワードと、予め定められた区分の属性の内容を表さない検索ワードとを含む複数の検索ワードを入力することにより、予め定められた区分の属性の検索条件とキーワードとを指定することができる。
なお、上記実施形態において、電子商店街サーバ1は、ジャンル情報DB12bに登録されたジャンル情報に基づいて、木構造における検索ワード同士の位置関係を調べていた。つまり、電子商店街の管理者等が決めたジャンルの木構造に基づいて、検索ワード同士の位置関係が調べられていた。しかしながら、電子商店街以外のWebサイトのWebページに基づいて、ジャンル情報が生成され、生成されたジャンル情報が、例えば、ジャンル情報DB12bに、または、ジャンル情報DB12bとは別のデータベースに登録されてもよい。そして、システム制御部14は、この登録されたジャンル情報に基づいて、木構造における検索ワード同士の位置関係を調べてもよい。この場合、ジャンル情報の生成及び登録は、例えば、電子商店街サーバ1が行ってもよいし、電子商店街サーバ1以外の情報処理装置が行ってもよい。Webページの取得先としては、例えば、百科事典のWebサイトがある。百科事典のWebサイトでは、例えば、各Webページに、そのWebページで説明されている事項に対して、関連する事項のWebページへのリンクが埋め込まれている。この場合、例えば、Webページで説明されている事項を、その事項に関連する事項の親ジャンルであるとする。そして、百科事典のWebサイトにおける各Webページのリンクに基づいて、ジャンルの木構造が特定される。また、電子商店街の管理者等が決めたジャンルの木構造に基づいて生成されたジャンル情報では足りない部分が、他のWebサイトから取得されたWebページに基づいて生成されたジャンル情報で補われるようになっていてもよい。
また、上記実施形態において、電子商店街サーバ1は、ユーザがジャンル名を検索ワードとして入力した場合であっても、その検索ワードをキーワード検索におけるキーワードとして用いていた。しかしながら、電子商店街サーバ1は、ジャンル名が検索ワードとして複数入力された場合、少なくとも1つの検索ワードが表すジャンルを、商品のジャンルに対する検索条件として用いてもよい。これにより、検索ワードが表すジャンルに属する商品を検索することができる。
例えば、電子商店街サーバ1は、2つの検索ワードがそれぞれ表すジャンル同士が祖先と子孫との関係にある場合、祖先の方の検索ワードが表すジャンルを、商品のジャンルに対する検索条件とし、子孫の方の検索ワードをキーワードとして用いてもよい。つまり、電子商店街サーバ1は、祖先のジャンルに属する商品のうち、商品名または商品説明の少なくとも何れか一方に子孫のジャンルを表す検索ワードを含む商品を検索する。具体的に、システム制御部14は、図11に示す検索式生成処理のS114の処理において、今回生成した単項式と生成済みの式とを論理積演算子で結合するとき、今回生成した単項式に含まれる属性ラベルを、ジャンルを示す属性ラベルに変更する。また、単項式に含まれる検索ワードを、検索ワードが表すジャンルのジャンルIDに変換する。例えば、「kw:コシヒカリ」と「kw:AA産」とを結合して新しい式が生成される場合、「gl:12345689*kw:AA産」が生成される。「gl:」は、ジャンルを示す属性ラベルである。また、「12345689」は、「コシヒカリ」のジャンルIDである。
図15は、本実施形態の変形例に係る電子商店街サーバ1のシステム制御部14の検索メイン処理における処理例を示すフローチャートである。図15において図13と同様の処理については同様の符号を付してある。
システム制御部14は、図15に示す検索メイン処理のステップS309において、属性区分が商品価格ではないと判定した場合には(ステップS309:NO)、取得した要素の属性区分がジャンルであるか否かを判定する(ステップS331)。つまり、システム制御部14は、取得した要素が「gl:」を含むか否かを判定する。このとき、システム制御部14は、属性区分がジャンルではないと判定した場合には(ステップS331:NO)、ステップS358に移行する。一方、システム制御部14は、属性区分がジャンルであると判定した場合には(ステップS331:YES)、取得した要素に含まれるジャンルIDが示すジャンルに属する商品を検索する。先ず、システム制御部14は、取得した要素に含まれるジャンルIDと同一のジャンルIDを含む商品情報を、商品情報DB12cから検索する(ステップS332)。つまり、システム制御部14は、ユーザが入力したジャンル名が表すジャンルと同一のジャンルに属する商品を検索する。次いで、システム制御部14は、取得した要素に含まれるジャンルIDが示すジャンルの子孫のジャンルのジャンルIDを含む商品情報を、商品情報DB12cから検索する(ステップS333)。つまり、システム制御部14は、ユーザが入力したジャンル名が表すジャンルの子孫のジャンルに属する商品を検索する。具体的に、システム制御部14は、商品情報に含まれるジャンルIDが示すジャンルの全ての祖先のジャンルIDを取得する。ジャンル情報DB12bに登録されているジャンル情報には、親ジャンルIDが登録されている。そのため、システム制御部14は、親ジャンルのジャンルIDを取得することができる。また、システム制御部14は、親ジャンルのジャンル情報から、親の更に親のジャンルIDを取得することができる。こうして、システム制御部14は、祖先のジャンルIDを取得する。次いで、システム制御部14は、取得された全ての祖先のジャンルIDのうち何れかが、取得した要素に含まれるジャンルIDと一致するか否かを判定する。このとき、何れかの祖先のジャンルIDが要素に含まれるジャンルIDと一致する商品情報は、取得した要素に含まれるジャンルIDが示すジャンルの子孫のジャンルのジャンルIDを含む商品情報である。システム制御部14は、このような処理を、商品情報DB12cに登録されている各商品情報について実行する。次いで、システム制御部14は、ステップS332及びS333においてそれぞれ検索した各商品情報から商品IDを取得し、取得した商品IDを登録した検索結果リストを生成する。そして、システム制御部14は、検索リストをスタックに格納する(ステップS314)。なお、ステップS351以降の処理は、図14と同様である。
また、電子商店街サーバ1は、ユーザがジャンル名として入力した検索ワードの全部について、検索ワードが表すジャンルを、商品のジャンルに対する検索条件として用いてもよい。具体的に、システム制御部14は、図11に示す検索式生成処理のステップS104において単項式を生成する場合、ジャンルを示す属性ラベルと、検索ワードが表すジャンルのジャンルIDとを接続して単項式を生成する。検索メイン処理は、図14及び図15の処理と同様でよい。このようにした場合、商品のジャンルと商品価格とに対して検索条件の指定が可能となる。つまり、検索条件の指定が可能な商品の属性が複数になる。従って、属性判定処理において、システム制御部14は、第1判定手段として、入力された検索ワードが属性値を表すか否かを、検索条件の指定が可能な複数の属性のそれぞれごとに判定していることになる。つまり、システム制御部14は、入力された検索ワードが属性値を表す属性を判別する。
また、上記実施形態において、電子商店街サーバ1は、検索ワードが表す属性の内容を、商品の属性に対する検索条件とすることと、検索ワードが表すジャンルのジャンル木における位置関係に基づく論理演算の決定と、の両方を行っていた。しかしながら、電子商店街サーバ1は、何れか一方のみを行ってもよい。
また、上記実施形態においては、検索条件設定領域110には、検索ワード入力欄111及び検索ボタン112という、検索ワードの入力に必要なウィジェットのみが表示されるようになっていた。しかしながら、検索条件設定領域110には、詳細な検索条件を指定するために必要なウィジェットが表示されてもよい。例えば、検索する商品をジャンルで絞り込むためのプルダウンメニューが表示されてもよい。また、検索ワード入力欄111に複数の検索ワードが入力された場合に、商品名や商品説明が、複数の検索ワードを全て含む商品を検索するか、または、複数の検索ワードの少なくとも1つを含む商品を検索するかを選択するためのプルダウンメニューが表示されてもよい。また、商品価格の上限値と下限値とをそれぞれ指定するための入力欄が表示されてもよい。ユーザが検索条件を指定するためのウィジェットを操作して検索条件を指定した場合、電子商店街サーバ1は、例えば、指定された検索条件を用いるとともに、検索ワード入力欄111に入力された検索ワードを全てキーワードとして用いて商品を検索してもよい。一方、ユーザが検索条件を指定するためのウィジェットを操作せずに検索ワード入力欄111に検索ワードを入力した場合、電子商店街サーバ1は、上記実施形態のように、各検索ワードが属性値を表すか否かを判定し、判定結果に応じて検索ワードを商品の属性に対する検索条件として用いて、検索を行ってもよい。つまり、検索条件を指定するための複数のウィジェットのうち検索ワード入力欄111に対して複数の検索ワードが入力された場合は、本発明の範囲内である。
また、複数の検索条件の組み合わせ方法は、論理積及び論理和に限られるものではない。例えば、排他的論理和が用いられてもよい。
また、上記実施形態においては、電子商店街で販売される商品の検索に本発明が適用されていた。しかしながら、例えば、オークションに出品される商品の検索に本発明が適用されてもよい。また、サービス、Webページ、画像、動画、音声、地図、ニュース、ブログ等の検索に、本発明が適用されてもよい。
また、上記実施形態においては、商品価格が、何らかの単位の数値で表される属性の一例として説明されていた。しかしながら、検索対象の属性に応じて、例えば、日本以外の国の通貨の単位や、重量、長さ、体積、時間、データ量等の単位に本発明が適用されてもよい。単位語としては、例えば、「g」、「m」、「l」、「秒」、「B」等がある。また、このような属性は、複数あってもよい。単位語DB12eには、例えば、単位語と、単位語に予め関連付けられた属性の区分を示すラベルとが対応付けて登録される。
また、上記実施形態においては、ジャンルに対して、木構造で階層的に定義される属性が適用されていた。しかしながら、ジャンル以外の属性に対して、本発明が適用されてもよい。また、このような属性は、複数あってもよい。
また、検索対象の属性の中には、互いに異なる複数の候補の中から選択された1つの候補が属性の内容として設定される属性がある。例えば、オークションに出品される商品の状態として、新品と中古とがある。このような属性については、各候補を表す語がデータベースに登録されてもよい。例えば、「新品」及び「中古」が登録される。そして、検索ワードが、データベースに登録されている複数の語のうち何れかの名称に一致する場合に、その検索ワードが、その区分の属性の内容を表すと判定されるように、本発明の検索装置が構成されてもよい。つまり、ユーザは、検索ワードとして、「新品」または「中古」を入力することにより、商品の状態に対する検索条件を指定することができる。