サポートされるクエリー
Zend_Search_Lucene と Java Lucene は、
強力なクエリー言語をサポートします。それにより、個別の語句や
条件の範囲を検索できます。ワイルドカードとあいまい検索を使用したり、
論理演算子を用いてクエリーを結合するなどして。
クエリー言語についての詳細は、
Zend_Search_Lucene コンポーネント・ドキュメントをご覧ください。
下記は、いくつかの一般的なクエリーの種類と方式の例です。
単一の単語に対する問い合わせ
文書項目全体を通して単語 "hello" を検索します。
異なる検索項目
重要事項。Java Lucene は、デフォルトでは "contents" 項目だけを探していきます。
しかし、Zend_Search_Lucene は、全項目を探していきます。
この動作は、Zend_Search_Lucene::setDefaultSearchField($fieldName)
メソッドを使って変更できます。
複数の単語に対する問い合わせ
2つの単語を検索します。両方の単語は任意です。
結果の中に少なくとも一つ存在しなければいけません。
クエリーで必須の単語
2つの単語を検索します。"hello" は必須で、"dolly" は任意です。
問い合わせられた文書で単語を禁止
2つの単語を検索します。"hello" は必須で、'dolly' は禁止です。
言い換えると、もし文書が "hello" にマッチし、単語
"dolly" を含むと、それは一致セットに返されません。
句に対する問い合わせ
句 "hello dolly" を検索します。
まさにその文字列が存在する文書のみマッチします。
特定の項目に対する問い合わせ
title 項目内の句 "The Right Way" および
text 項目内の単語 "go" を検索します。
特定の項目ならびに文書全体に対する問合せ
title 項目内の句 "The Right Way" および
文書の全項目に現れる単語 "go" を検索します。
特定の項目ならびに文書全体に対する問合せ(別の例)
title 項目内の単語 "Do" および
全項目の単語 "it" および "right" を探していきます。
いずれか一つマッチすると、文書がマッチすることになります。
ワイルドカード "?" を用いた問い合わせ
パターン "te?t" にマッチする単語を検索します。
そのパターンで、"?" は単一文字の全てです。
ワイルドカード "*" を用いた問い合わせ
パターン "test*" にマッチする単語を検索します。
そのパターンで、"*" はゼロ個以上の文字が連続したもの全てです。
条件を含む範囲に対する問い合わせ
条件の範囲を検索します (含みます)。
条件を含まない範囲に対する問い合わせ
条件の範囲を検索します (含みません)。
あいまい検索
単語 "roam" をあいまい検索します。
ブーリアン検索
ブーリアン・クエリー
サポートされたクエリーは全て、Zend_Search_Lucene
のクエリ構成 API
で構成できます。
さらに、クエリー解析とクエリー構成を組み合わせるかもしれません。
解析されて構成されたクエリーを組み合わせ
addSubquery($userQuery, true /* required */);
$query->addSubquery($constructedQuery, true /* required */);
]]>