0

クエリ文字列内の各単語が特定の要素に含まれていることを確認する検索を実行しようとしています。たとえば$query = "Sports With Stripes"、特定の要素に 3 つの単語すべてが含まれている必要がある場合 (任意の順序であるため、句ではありません)。

検索を要素に制限するには、次の制約があります。

        <constraint name="inelement">
            <word>
                <element ns="" name="myElement"/>
                <term-option>case-insensitive</term-option>
            </word>
        </constraint>

これは大丈夫そうですが、 に何を入れるかについては苦労していsearch:searchます。私は最初にこれを試みました:

search:search('inelement:spots with stripes', $options, 1, 25)

"spots"これは私の要素に制限されているだけなので、うまくいきませんでした。

次に、次のことを試しましたが、必要な結果が得られましたが、これがこれを達成する唯一の方法なのか、それとも検索用語の間に演算子を使用するなどの別の方法があるのか​​ 疑問に思っていました.

search:search('inelement:spots inelement:with inelement:stripes', $options, 1, 25)

より良い方法はありますか?または、制約を my に追加する前に、手動で queryString を解析して個々の単語に分割する必要がありますsearch:searchか?

4

2 に答える 2

1

空白全体に制約を適用するには、引用符を使用します。

inelement:"spots with stripes"

単一の要素単語用語を返すデフォルトのパーサーを使用します。用語を単語に分解するには、カスタム パーサー関数を記述できます。http://docs.marklogic.com/guide/search-dev/search-api#id_49750に例があります。

cts:near-query3 つの単語がすべて同じ要素内にあることを確認したい場合があります。element-word-positionsまた、データベース構成で有効にする必要がある場合があります。

于 2013-08-15T19:10:18.717 に答える