に基づいて、私はいくつかの部分的観点からの結果と一致するようにしたいが、XQuery関数で検索複数が含まれています()トークン化文字列
- 「JOHん」マッチ「ジョン・ドウ」
- は「城を行う」も」と一致しますジョン・ドウ」
- など
では(含まれている)、唯一の "ジョンはやる" または "JOHは" 結果と一致します。
$item[contains(., "john do")]
私がそうしたいのですが...
$item[contains(., "joh") and contains(., "do")]
...どんなに検索文字列内にあるどのように多くの用語。
私はトークン化()、それにループが、私はそれがあることが予想ように、そのループの結果が正確であるlet $search := "john do"
let $terms := fn:tokenize($search, '\s')
let $query := string-join(
(for $t in $terms
return
concat('contains(.,"', $t, '")')
), ' and '
)
return $query
を望むものを作成するために使用しようとしている
が、それは効果がありませんXPathクエリでは、テキストだけだったので(明らかに、concat()はテキストのみを出力します)
$item[$query]
私は何かが恋愛しましたか?その例では、関数はconcat()より優れていますか?
ありがとうございました!
ありがとう!私はそれらの表現を知らなかったし、それは完全に動作します。かなり速いです。 $ itemの代わりに$ searchをトークン化し、$ searchの代わりに$ itemに$ containsを追加しました $ itemの$ itemのために let $ search:= "john do" let $ terms: = fn:tokenize($ search、 '\ s') $ termsのすべての$ termがcontains($ item、$ term)を満たしています return $ item' –
@GPええ、それはもっと一般的なユースケースのように聞こえます私は期待していただろう。しかし、私の問題の説明は、あなたが他の方法でそれを望むように読んでいます。とにかく、それは重要な概念です、変数を交換するのは簡単です:)それは助けて嬉しい – dirkk