検索

サポートされるクエリー

Zend_Search_Lucene と Java Lucene は、 強力なクエリー言語をサポートします。それにより、個別の語句や 条件の範囲を検索できます。ワイルドカードとあいまい検索を使用したり、 論理演算子を用いてクエリーを結合するなどして。

クエリー言語についての詳細は、 Zend_Search_Lucene コンポーネント・ドキュメントをご覧ください。

下記は、いくつかの一般的なクエリーの種類と方式の例です。

Example #1 単一の単語に対する問い合わせ

  1. hello

文書項目全体を通して単語 "hello" を検索します。

Note: 異なる検索項目
重要事項。Java Lucene は、デフォルトでは "contents" 項目だけを探していきます。 しかし、Zend_Search_Lucene は、項目を探していきます。 この動作は、 Zend_Search_Lucene::setDefaultSearchField($fieldName) メソッドを使って変更できます。

Example #2 複数の単語に対する問い合わせ

  1. hello dolly

2つの単語を検索します。両方の単語は任意です。 結果の中に少なくとも一つ存在しなければいけません。

Example #3 クエリーで必須の単語

  1. +hello dolly

2つの単語を検索します。"hello" は必須で、"dolly" は任意です。

Example #4 問い合わせられた文書で単語を禁止

  1. +hello -dolly

2つの単語を検索します。"hello" は必須で、'dolly' は禁止です。 言い換えると、もし文書が "hello" にマッチし、単語 "dolly" を含むと、それは一致セットに返されません。

Example #5 句に対する問い合わせ

  1. "hello dolly"

句 "hello dolly" を検索します。 まさにその文字列が存在する文書のみマッチします。

Example #6 特定の項目に対する問い合わせ

  1. title:"The Right Way" AND text:go

title 項目内の句 "The Right Way" および text 項目内の単語 "go" を検索します。

Example #7 特定の項目ならびに文書全体に対する問合せ

  1. title:"The Right Way" AND  go

title 項目内の句 "The Right Way" および 文書の全項目に現れる単語 "go" を検索します。

Example #8 特定の項目ならびに文書全体に対する問合せ(別の例)

  1. title:Do it right

title 項目内の単語 "Do" および 全項目の単語 "it" および "right" を探していきます。 いずれか一つマッチすると、文書がマッチすることになります。

Example #9 ワイルドカード "?" を用いた問い合わせ

  1. te?t

パターン "te?t" にマッチする単語を検索します。 そのパターンで、"?" は単一文字の全てです。

Example #10 ワイルドカード "*" を用いた問い合わせ

  1. test*

パターン "test*" にマッチする単語を検索します。 そのパターンで、"*" はゼロ個以上の文字が連続したもの全てです。

Example #11 条件を含む範囲に対する問い合わせ

  1. mod_date:[20020101 TO 20030101]

条件の範囲を検索します (含みます)。

Example #12 条件を含まない範囲に対する問い合わせ

  1. title:{Aida to Carmen}

条件の範囲を検索します (含みません)。

Example #13 あいまい検索

  1. roam~

単語 "roam" をあいまい検索します。

Example #14 ブーリアン検索

  1. (framework OR library) AND php

ブーリアン・クエリー

サポートされたクエリーは全て、Zend_Search_Luceneクエリ構成 API で構成できます。 さらに、クエリー解析とクエリー構成を組み合わせるかもしれません。

Example #15 解析されて構成されたクエリーを組み合わせ

  1. $userQuery = Zend_Search_Lucene_Search_QueryParser::parse($queryStr);
  2.  
  3. $query = new Zend_Search_Lucene_Search_Query_Boolean();
  4. $query->addSubquery($userQuery, true  /* required */);
  5. $query->addSubquery($constructedQuery, true  /* required */);

検索