|
|
@@ -1,6 +1,6 @@
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
<!-- Reviewed: no -->
|
|
|
-<!-- EN-Revision: 21740 -->
|
|
|
+<!-- EN-Revision: 21829 -->
|
|
|
<sect1 id="zend.search.lucene.query-language">
|
|
|
<title>クエリ言語</title>
|
|
|
|
|
|
@@ -60,6 +60,7 @@
|
|
|
<classname>Zend_Search_Lucene</classname> クラスにはふたつの静的メソッドがあり、
|
|
|
この設定を操作できます。
|
|
|
</para>
|
|
|
+
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
$defaultSearchField = Zend_Search_Lucene::getDefaultSearchField();
|
|
|
...
|
|
|
@@ -80,30 +81,32 @@ Zend_Search_Lucene::setDefaultSearchField('contents');
|
|
|
タイトルが "The Right Way" で本文に "don't go this way"
|
|
|
が含まれるドキュメントを探したいなら、
|
|
|
</para>
|
|
|
+
|
|
|
<programlisting language="querystring"><![CDATA[
|
|
|
title:"The Right Way" AND text:go
|
|
|
]]></programlisting>
|
|
|
+
|
|
|
<para>
|
|
|
- あるいは
|
|
|
+ あるいは下記にします。
|
|
|
+ "text" はデフォルトのフィールドなので、フィールドの指定は必須ではなくなります。
|
|
|
</para>
|
|
|
+
|
|
|
<programlisting language="querystring"><![CDATA[
|
|
|
title:"Do it right" AND go
|
|
|
]]></programlisting>
|
|
|
- <para>
|
|
|
- とします。"text" はデフォルトのフィールドなので、フィールドの指定は必須ではなくなります。
|
|
|
- </para>
|
|
|
|
|
|
<para>
|
|
|
注意: フィールドが有効なのは、その直後にある単語、
|
|
|
- フレーズあるいはサブクエリだけであることに注意しましょう。つまり、クエリ
|
|
|
- <programlisting language="querystring"><![CDATA[
|
|
|
-title:Do it right
|
|
|
-]]></programlisting>
|
|
|
+ フレーズあるいはサブクエリだけであることに注意しましょう。つまり、下記のクエリ
|
|
|
は "Do" だけを title フィールドから探し、"it" や "right"
|
|
|
はデフォルトのフィールドから探します。デフォルトのフィールドが
|
|
|
<constant>NULL</constant> に設定されている場合は、"it" や "right"
|
|
|
はすべてのフィールドから探します。
|
|
|
</para>
|
|
|
+
|
|
|
+ <programlisting language="querystring"><![CDATA[
|
|
|
+title:Do it right
|
|
|
+]]></programlisting>
|
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="zend.search.lucene.query-language.wildcard">
|
|
|
@@ -124,30 +127,31 @@ title:Do it right
|
|
|
<para>
|
|
|
単一文字のワイルドカードは、
|
|
|
単語の中の "?" を別の一文字に置き換えたものにマッチする単語を探します。
|
|
|
- たとえば、"text" あるいは "test" を探したい場合は
|
|
|
- <programlisting language="querystring"><![CDATA[
|
|
|
+ たとえば、"text" あるいは "test" を探したい場合はこうします。
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="querystring"><![CDATA[
|
|
|
te?t
|
|
|
]]></programlisting>
|
|
|
- とします。
|
|
|
- </para>
|
|
|
|
|
|
<para>
|
|
|
複数文字のワイルドカードは、0 個以上の任意の数の文字に対応します。
|
|
|
- たとえば test、tests あるいは tester を探したい場合は
|
|
|
- <programlisting language="querystring"><![CDATA[
|
|
|
+ たとえば test、tests あるいは tester を探したい場合はこうします。
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="querystring"><![CDATA[
|
|
|
test*
|
|
|
]]></programlisting>
|
|
|
- とします。
|
|
|
- </para>
|
|
|
|
|
|
<para>
|
|
|
"?" や "*" は単語のどの部分でも使え、
|
|
|
また両方を同時に使うこともできます。たとえば
|
|
|
- <programlisting language="querystring"><![CDATA[
|
|
|
+ 下記は、"write" や "wrote"、"written"、"rewrite"、"rewrote" などに対応します。
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="querystring"><![CDATA[
|
|
|
*wr?t*
|
|
|
]]></programlisting>
|
|
|
- は、"write" や "wrote"、"written"、"rewrite"、"rewrote" などに対応します。
|
|
|
- </para>
|
|
|
|
|
|
<para>
|
|
|
ZF 1.7.7 以降、ワイルドカードパターンにはワイルドカード以外のプレフィックスが必要となりました。
|
|
|
@@ -184,29 +188,40 @@ test*
|
|
|
その範囲に含まれるドキュメントを探すものです。
|
|
|
最大値と最小値そのものを含めることも含めないこともできます。
|
|
|
並べ替えは、辞書順で行われます。
|
|
|
- <programlisting language="querystring"><![CDATA[
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="querystring"><![CDATA[
|
|
|
mod_date:[20020101 TO 20030101]
|
|
|
]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
これは、mod_date フィールドの値が 20020101 から 20030101 (両端を含む)
|
|
|
であるドキュメントを探します。
|
|
|
範囲検索は、日付フィールド以外でも使えることに注意しましょう。
|
|
|
- <programlisting language="querystring"><![CDATA[
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="querystring"><![CDATA[
|
|
|
title:{Aida TO Carmen}
|
|
|
]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
これは、タイトルが Aida から Carmen までの間にあるドキュメントを探します。
|
|
|
ただし、Aida および Carmen は含めません。
|
|
|
</para>
|
|
|
+
|
|
|
<para>
|
|
|
両端の値を含めるには角括弧 []、含めない場合は波括弧 {}
|
|
|
でクエリを指定します。
|
|
|
</para>
|
|
|
+
|
|
|
<para>
|
|
|
フィールドを指定しなかった場合は、<classname>Zend_Search_Lucene</classname>
|
|
|
はすべてのフィールドに対して範囲検索を行います。
|
|
|
- <programlisting language="querystring"><![CDATA[
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="querystring"><![CDATA[
|
|
|
{Aida TO Carmen}
|
|
|
]]></programlisting>
|
|
|
- </para>
|
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="zend.search.lucene.query-language.fuzzy">
|
|
|
@@ -216,23 +231,26 @@ title:{Aida TO Carmen}
|
|
|
これは、レーベンシュタイン距離のアルゴリズムにもとづくものです。
|
|
|
あいまい検索を行うには、チルダ記号 "~" を単語の最後に指定します。
|
|
|
たとえば、"roam" と似たスペルの単語を探すには、次のようなあいまい検索を使用します。
|
|
|
+ </para>
|
|
|
|
|
|
- <programlisting language="querystring"><![CDATA[
|
|
|
+ <programlisting language="querystring"><![CDATA[
|
|
|
roam~
|
|
|
]]></programlisting>
|
|
|
|
|
|
+ <para>
|
|
|
この検索は、foam あるいは roams といった単語にマッチします。
|
|
|
-
|
|
|
(オプションの) 追加のパラメータによって、
|
|
|
あいまい検索の程度を指定できます。
|
|
|
このパラメータの値は 0 から 1 までの間となり、
|
|
|
1 に近づくほど、類似点が多い単語にのみマッチするようになります。
|
|
|
たとえば次のように使用します。
|
|
|
+ </para>
|
|
|
|
|
|
- <programlisting language="querystring"><![CDATA[
|
|
|
+ <programlisting language="querystring"><![CDATA[
|
|
|
roam~0.8
|
|
|
]]></programlisting>
|
|
|
|
|
|
+ <para>
|
|
|
このパラメータを省略した場合のデフォルトは 0.5 です。
|
|
|
</para>
|
|
|
</sect2>
|
|
|
@@ -246,7 +264,7 @@ roam~0.8
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
- そこで、Zend_Search_Lucene はマッチする単語数の制限をクエリ (サブクエリ) 単位で設定します。
|
|
|
+ そこで、<classname>Zend_Search_Lucene</classname> はマッチする単語数の制限をクエリ (サブクエリ) 単位で設定します。
|
|
|
この制限を取得したり設定したりするには
|
|
|
<code>Zend_Search_Lucene::getTermsPerQueryLimit()</code>/<code>Zend_Search_Lucene::setTermsPerQueryLimit($limit)</code>
|
|
|
メソッドを使用します。
|
|
|
@@ -262,12 +280,12 @@ roam~0.8
|
|
|
<para>
|
|
|
Lucene は、複数の単語が指定した範囲内にあらわれる状態の検索をサポートしています。
|
|
|
近接検索を行うには、チルダ記号 "~" をフレーズの最後に指定します。
|
|
|
- たとえば、"Zend" と "Framework" がお互い 10 ワードの範囲内にあらわれるドキュメントを検索するには
|
|
|
- <programlisting language="querystring"><![CDATA[
|
|
|
+ たとえば、"Zend" と "Framework" がお互い 10 ワードの範囲内にあらわれるドキュメントを検索するにはこうします。
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="querystring"><![CDATA[
|
|
|
"Zend Framework"~10
|
|
|
]]></programlisting>
|
|
|
- とします。
|
|
|
- </para>
|
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="zend.search.lucene.query-language.boosting">
|
|
|
@@ -283,19 +301,31 @@ roam~0.8
|
|
|
<para>
|
|
|
この機能を使用すると、単語の強調度によってドキュメントの関連性を制御できるようになります。
|
|
|
たとえば
|
|
|
- <programlisting language="querystring"><![CDATA[
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="querystring"><![CDATA[
|
|
|
PHP framework
|
|
|
]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
を検索しようとしており、単語 "PHP" をより重視したいとしましょう。
|
|
|
そんな場合は ^ 記号と強調度を単語の後に続けます。つまり
|
|
|
- <programlisting language="querystring"><![CDATA[
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="querystring"><![CDATA[
|
|
|
PHP^4 framework
|
|
|
]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
のようにします。これにより、 <acronym>PHP</acronym> という単語を含むドキュメントがより重視されるようになります。
|
|
|
フレーズやサブクエリを強調することも可能です。たとえば
|
|
|
- <programlisting language="querystring"><![CDATA[
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="querystring"><![CDATA[
|
|
|
"PHP framework"^4 "Zend Framework"
|
|
|
]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
のようになります。デフォルトの強調度は 1 です。強調度には正の数値を指定しますが、
|
|
|
1 より小さくする (たとえば 0.2 など) ことも可能です。
|
|
|
</para>
|
|
|
@@ -330,11 +360,12 @@ PHP^4 framework
|
|
|
</para>
|
|
|
<para>
|
|
|
"PHP framework" および "Zend Framework" を含むドキュメントを検索するには
|
|
|
- <programlisting language="querystring"><![CDATA[
|
|
|
+ 下記を使用します。
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="querystring"><![CDATA[
|
|
|
"PHP framework" AND "Zend Framework"
|
|
|
]]></programlisting>
|
|
|
- を使用します。
|
|
|
- </para>
|
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="zend.search.lucene.query-language.boolean.or">
|
|
|
@@ -344,11 +375,12 @@ PHP^4 framework
|
|
|
</para>
|
|
|
<para>
|
|
|
"PHP framework" あるいは "Zend Framework" を含むドキュメントを検索するには
|
|
|
- <programlisting language="querystring"><![CDATA[
|
|
|
+ 下記を使用します。
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="querystring"><![CDATA[
|
|
|
"PHP framework" OR "Zend Framework"
|
|
|
]]></programlisting>
|
|
|
- を使用します。
|
|
|
- </para>
|
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="zend.search.lucene.query-language.boolean.not">
|
|
|
@@ -359,12 +391,13 @@ PHP^4 framework
|
|
|
インデックス化されたドキュメント全体ではなく空の結果を返します。
|
|
|
</para>
|
|
|
<para>
|
|
|
- "PHP framework" を含むが "Zend Framework" は含まないドキュメントを検索するには
|
|
|
- <programlisting language="querystring"><![CDATA[
|
|
|
+ "PHP framework" を含むけれども "Zend Framework" を含まないドキュメントを検索するには
|
|
|
+ 下記を使用します。
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="querystring"><![CDATA[
|
|
|
"PHP framework" AND NOT "Zend Framework"
|
|
|
]]></programlisting>
|
|
|
- を使用します。
|
|
|
- </para>
|
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="zend.search.lucene.query-language.boolean.other-form">
|
|
|
@@ -382,11 +415,12 @@ PHP^4 framework
|
|
|
</para>
|
|
|
<para>
|
|
|
"Zend" を必ず含み、"Framework" を含んでも含まなくてもかまわないドキュメントを検索するには
|
|
|
- <programlisting language="querystring"><![CDATA[
|
|
|
+ 下記を使用します。
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="querystring"><![CDATA[
|
|
|
+Zend Framework
|
|
|
]]></programlisting>
|
|
|
- を使用します。
|
|
|
- </para>
|
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="zend.search.lucene.query-language.boolean.minus">
|
|
|
@@ -396,12 +430,12 @@ PHP^4 framework
|
|
|
"-" 記号の後の単語を含むドキュメントを検索結果から除外します。
|
|
|
</para>
|
|
|
<para>
|
|
|
- "PHP framework" は含むが "Zend Framework" は含まないドキュメントを検索するには
|
|
|
+ "PHP framework" を含むけれども "Zend Framework" を含まないドキュメントを検索するには
|
|
|
+ 下記を使用します。
|
|
|
+ </para>
|
|
|
<programlisting language="querystring"><![CDATA[
|
|
|
"PHP framework" -"Zend Framework"
|
|
|
]]></programlisting>
|
|
|
- を使用します。
|
|
|
- </para>
|
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="zend.search.lucene.query-language.boolean.no-operator">
|
|
|
@@ -420,11 +454,12 @@ PHP^4 framework
|
|
|
</para>
|
|
|
<para>
|
|
|
"PHP framework" は必須で "Zend Framework" は含んでも含まなくてもかまわないドキュメントを検索するには
|
|
|
- <programlisting language="querystring"><![CDATA[
|
|
|
+ 下記を使用します。
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="querystring"><![CDATA[
|
|
|
+"PHP framework" "Zend Framework"
|
|
|
]]></programlisting>
|
|
|
- を使用します。
|
|
|
- </para>
|
|
|
|
|
|
<para>
|
|
|
デフォルトの boolean 演算子を設定したり取得したりするには、それぞれ
|
|
|
@@ -446,9 +481,13 @@ PHP^4 framework
|
|
|
Java Lucene および <classname>Zend_Search_Lucene</classname> では、
|
|
|
括弧を使用して条件をグループ化することによるサブクエリの作成をサポートしています。
|
|
|
これは、クエリのロジックを制御したい場合や異なるスタイルの論理クエリを共用したい場合などに便利です。
|
|
|
- <programlisting language="querystring"><![CDATA[
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="querystring"><![CDATA[
|
|
|
+(framework OR library) +php
|
|
|
]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
<classname>Zend_Search_Lucene</classname> は、あらゆるレベルのサブクエリをサポートしています。
|
|
|
</para>
|
|
|
</sect2>
|
|
|
@@ -461,11 +500,12 @@ PHP^4 framework
|
|
|
</para>
|
|
|
<para>
|
|
|
タイトルに単語 "return" とフレーズ "pink panther" の両方を含むドキュメントを検索するには
|
|
|
- <programlisting language="querystring"><![CDATA[
|
|
|
+ 下記を使用します。Zend_Search_Lucene は、あらゆるレベルのサブクエリをサポートしています。
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="querystring"><![CDATA[
|
|
|
title:(+return +"pink panther")
|
|
|
]]></programlisting>
|
|
|
- を使用します。Zend_Search_Lucene は、あらゆるレベルのサブクエリをサポートしています。
|
|
|
- </para>
|
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="zend.search.lucene.query-language.escaping">
|
|
|
@@ -483,12 +523,11 @@ title:(+return +"pink panther")
|
|
|
</para>
|
|
|
<para>
|
|
|
これらの文字をエスケープするには、その文字の前に \ をつけます。
|
|
|
- たとえば、(1+1):2 を検索するには
|
|
|
- <programlisting language="querystring"><![CDATA[
|
|
|
+ たとえば、(1+1):2 を検索するには下記を使用します。
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="querystring"><![CDATA[
|
|
|
\(1\+1\)\:2
|
|
|
]]></programlisting>
|
|
|
- を使用します。
|
|
|
- </para>
|
|
|
</sect2>
|
|
|
-
|
|
|
</sect1>
|