| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- Reviewed: no -->
- <!-- EN-Revision: 24249 -->
- <sect1 id="learning.lucene.queries">
- <title>サポートされるクエリー</title>
- <para>
- <classname>Zend_Search_Lucene</classname> と Java Lucene は、
- 強力なクエリー言語をサポートします。それにより、個別の語句や
- 条件の範囲を検索できます。ワイルドカードとあいまい検索を使用したり、
- 論理演算子を用いてクエリーを結合するなどして。
- </para>
- <para>
- クエリー言語についての詳細は、<link linkend="zend.search.lucene.query-language">
- Zend_Search_Lucene コンポーネント・ドキュメント</link>をご覧ください。
- </para>
- <para>
- 下記は、いくつかの一般的なクエリーの種類と方式の例です。
- </para>
- <example id="learning.lucene.queries.keyword">
- <title>単一の単語に対する問い合わせ</title>
- <programlisting language="text"><![CDATA[
- hello
- ]]></programlisting>
- <para>
- 文書項目全体を通して単語 "hello" を検索します。
- </para>
- </example>
- <note>
- <title>異なる検索項目</title>
- <para>
- 重要事項。Java Lucene は、デフォルトでは "contents" 項目だけを探していきます。
- しかし、<classname>Zend_Search_Lucene</classname> は、<emphasis>全</emphasis>項目を探していきます。
- この動作は、<methodname>Zend_Search_Lucene::setDefaultSearchField($fieldName)</methodname>
- メソッドを使って変更できます。
- </para>
- </note>
- <example id="learning.lucene.queries.multiple-words">
- <title>複数の単語に対する問い合わせ</title>
- <programlisting language="text"><![CDATA[
- hello dolly
- ]]></programlisting>
- <para>
- 2つの単語を検索します。両方の単語は任意です。
- 結果の中に少なくとも一つ存在しなければいけません。
- </para>
- </example>
- <example id="learning.lucene.queries.required-words">
- <title>クエリーで必須の単語</title>
- <programlisting language="text"><![CDATA[
- +hello dolly
- ]]></programlisting>
- <para>
- 2つの単語を検索します。"hello" は必須で、"dolly" は任意です。
- </para>
- </example>
- <example id="learning.lucene.queries.prohibited-words">
- <title>問い合わせられた文書で単語を禁止</title>
- <programlisting language="text"><![CDATA[
- +hello -dolly
- ]]></programlisting>
- <para>
- 2つの単語を検索します。"hello" は必須で、'dolly' は禁止です。
- 言い換えると、もし文書が "hello" にマッチし、単語
- "dolly" を含むと、それは一致セットに返されません。
- </para>
- </example>
- <example id="learning.lucene.queries.phrases">
- <title>句に対する問い合わせ</title>
- <programlisting language="text"><![CDATA[
- "hello dolly"
- ]]></programlisting>
- <para>
- 句 "hello dolly" を検索します。
- まさにその文字列が存在する文書のみマッチします。
- </para>
- </example>
- <example id="learning.lucene.queries.fields">
- <title>特定の項目に対する問い合わせ</title>
- <programlisting language="text"><![CDATA[
- title:"The Right Way" AND text:go
- ]]></programlisting>
- <para>
- <property>title</property> 項目内の句 "The Right Way" および
- <property>text</property> 項目内の単語 "go" を検索します。
- </para>
- </example>
- <example id="learning.lucene.queries.fields-and-document">
- <title>特定の項目ならびに文書全体に対する問合せ</title>
- <programlisting language="text"><![CDATA[
- title:"The Right Way" AND go
- ]]></programlisting>
- <para>
- <property>title</property> 項目内の句 "The Right Way" および
- 文書の全項目に現れる単語 "go" を検索します。
- </para>
- </example>
- <example id="learning.lucene.queries.fields-and-document-alt">
- <title>特定の項目ならびに文書全体に対する問合せ(別の例)</title>
- <programlisting language="text"><![CDATA[
- title:Do it right
- ]]></programlisting>
- <para>
- <property>title</property> 項目内の単語 "Do" および
- 全項目の単語 "it" および "right" を探していきます。
- いずれか一つマッチすると、文書がマッチすることになります。
- </para>
- </example>
- <example id="learning.lucene.queries.wildcard-question">
- <title>ワイルドカード "?" を用いた問い合わせ</title>
- <programlisting language="text"><![CDATA[
- te?t
- ]]></programlisting>
- <para>
- パターン "te?t" にマッチする単語を検索します。
- そのパターンで、"?" は単一文字の全てです。
- </para>
- </example>
- <example id="learning.lucene.queries.wildcard-asterisk">
- <title>ワイルドカード "*" を用いた問い合わせ</title>
- <programlisting language="text"><![CDATA[
- test*
- ]]></programlisting>
- <para>
- パターン "test*" にマッチする単語を検索します。
- そのパターンで、"*" はゼロ個以上の文字が連続したもの全てです。
- </para>
- </example>
- <example id="learning.lucene.queries.range-inclusive">
- <title>条件を含む範囲に対する問い合わせ</title>
- <programlisting language="text"><![CDATA[
- mod_date:[20020101 TO 20030101]
- ]]></programlisting>
- <para>
- 条件の範囲を検索します (含みます)。
- </para>
- </example>
- <example id="learning.lucene.queries.range-exclusive">
- <title>条件を含まない範囲に対する問い合わせ</title>
- <programlisting language="text"><![CDATA[
- title:{Aida to Carmen}
- ]]></programlisting>
- <para>
- 条件の範囲を検索します (含みません)。
- </para>
- </example>
- <example id="learning.lucene.queries.fuzzy">
- <title>あいまい検索</title>
- <programlisting language="text"><![CDATA[
- roam~
- ]]></programlisting>
- <para>
- 単語 "roam" をあいまい検索します。
- </para>
- </example>
- <example id="learning.lucene.queries.boolean">
- <title>ブーリアン検索</title>
- <programlisting language="text"><![CDATA[
- (framework OR library) AND php
- ]]></programlisting>
- <para>
- ブーリアン・クエリー
- </para>
- </example>
- <para>
- サポートされたクエリーは全て、<classname>Zend_Search_Lucene</classname>
- の<link linkend="zend.search.lucene.query-api">クエリ構成 API</link>
- で構成できます。
- さらに、クエリー解析とクエリー構成を組み合わせるかもしれません。
- </para>
- <example id="learning.lucene.queries.combining">
- <title>解析されて構成されたクエリーを組み合わせ</title>
- <programlisting language="php"><![CDATA[
- $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 */);
- ]]></programlisting>
- </example>
- </sect1>
|