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