Created
March 24, 2010 23:42
-
-
Save dscape/342965 to your computer and use it in GitHub Desktop.
Introduction to Alerting
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let $doc := | |
<root> | |
<a> It starts with hello and ends with goodbye. </a> | |
</root> | |
return | |
cts:highlight( $doc, cts:and-query(("hello", "goodbye")), | |
if (cts:word-query-text($cts:queries) eq "hello") | |
then (<font color="blue">{$cts:text}</font>) | |
else (<font color="red">{$cts:text}</font>)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let $query := <query> {cts:word-query("hello")} </query> | |
let $p := <p>hello stranger!</p> | |
return cts:contains( $query, cts:reverse-query($p) ) | |
(: now you can store your queries in the database and use them on ingestion :) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let $car := <car> | |
<maker country="jp">Honda</maker> | |
<model>Civic</model> | |
<year>2005</year> | |
<type>Compact</type> | |
<query> { cts:or-query( | |
( cts:word-query("civic","case-insensitive"), | |
cts:word-query("honda","case-insensitive"), | |
cts:word-query("compact","case-insensitive"), | |
cts:word-query("japan","case-insensitive")))} </query> | |
<desc>The Honda Civic is a line of compact cars developed and manufactured by Honda. In North America, the Civic is the second-longest continuously-running nameplate from a Japanese manufacturer; only the Toyota Corolla, introduced in 1968, has been in production longer. The Civic, along with the Accord and Prelude, comprised Honda's vehicles sold in North America until the 1990s, when the model lineup was expanded. Having gone through several generational changes, the Civic has become larger and more upmarket, and it currently slots between the Fit and Accord.</desc> | |
</car> | |
let $x := <p>I like cars from japan</p> | |
return cts:contains( $car/query, cts:reverse-query($x) ) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
declare function local:uri-for-car($maker, $model, $year) { | |
fn:concat('/cars/', $maker, '-', $model, '.xml') } ; | |
let $civic := <car> | |
<maker country="jp">Honda</maker> | |
<model>Civic</model> | |
<year>2005</year> | |
<type>Compact</type> | |
<query> { cts:or-query( | |
( cts:word-query("civic","case-insensitive"), | |
cts:word-query("honda","case-insensitive"), | |
cts:word-query("compact","case-insensitive"), | |
cts:word-query("japan","case-insensitive")))} </query> | |
<desc>The Honda Civic is a line of compact cars developed and manufactured by Honda. In North America, the Civic is the second-longest continuously-running nameplate from a Japanese manufacturer; only the Toyota Corolla, introduced in 1968, has been in production longer. The Civic, along with the Accord and Prelude, comprised Honda's vehicles sold in North America until the 1990s, when the model lineup was expanded. Having gone through several generational changes, the Civic has become larger and more upmarket, and it currently slots between the Fit and Accord.</desc> | |
</car> | |
let $accord := <car> | |
<maker country="jp">Toyota</maker> | |
<model>Accord</model> | |
<year>2008</year> | |
<type>Sedan</type> | |
<query> { cts:or-query( | |
( cts:word-query("accord","case-insensitive"), | |
cts:word-query("compact","case-insensitive"), | |
cts:word-query("japan","case-insensitive")))} </query> | |
<desc>The Toyota Corolla is a line of subcompact/compact cars manufactured by the Japanese automaker Toyota, which has become very popular throughout the world since the nameplate was first introduced in 1966. In 1997, the Corolla became the best selling nameplate in the world, with over 35 million sold as of 2007. Over the past 40 years, one Corolla car has been sold on average every 40 seconds. The series has undergone several major redesigns.</desc> | |
</car> | |
let $charger := <car> | |
<maker country="jp">Dodge</maker> | |
<model>Charger</model> | |
<year>2006</year> | |
<type>Sedan</type> | |
<query> { cts:or-query( | |
( cts:word-query("dodge","case-insensitive"), | |
cts:word-query("sedan","case-insensitive"), | |
cts:word-query("charger","case-insensitive"), | |
cts:word-query("america","case-insensitive")))} </query> | |
<desc>The Dodge Charger LX is a rear-wheel drive four-door automobile introduced in February 2005. Built by Chrysler for its North American Dodge brand, the car was created to continue the Dodge Charger line, and replaced the Dodge Intrepid as Dodge's full-size sedan. It shares the LX platform with the Chrysler 300, the newer third generation Dodge Challenger, and the now-discontinued Dodge Magnum.</desc> | |
</car> | |
for $car in ($civic, $accord, $charger) | |
return | |
xdmp:document-insert( | |
local:uri-for-car($car/maker, $car/model, $car/year), | |
$car | |
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
declare function local:uri-for-car($maker, $model, $year) { | |
fn:concat('/cars/', $maker, '-', $model, '.xml') } ; | |
declare function local:alert($query,$cars){ | |
for $car in $cars/car[cts:contains(.,$query)] | |
let $maker := $car/maker | |
let $model := $car/model | |
let $year := $car/year | |
return | |
xdmp:log( | |
fn:concat("Match found for ", $maker , " " , $model, " of ", $year) | |
) }; | |
let $car := <car> | |
<maker country="jp">Honda</maker> | |
<model>Odyssey</model> | |
<year>2006</year> | |
<!-- Changing to Sedan gives a lot more results --> | |
<type>Minivan</type> | |
<query> { cts:or-query( | |
( cts:word-query("minivan","case-insensitive"), | |
cts:word-query("honda","case-insensitive"), | |
cts:word-query("odyssey","case-insensitive"), | |
cts:word-query("japan","case-insensitive")))} </query> | |
<desc>The Honda Odyssey is a minivan manufactured by Japanese automaker Honda since 1994, marketed worldwide, and now in its third (North America) and fourth generations (Japan).</desc> | |
</car> | |
let $cars := cts:search( fn:doc(), cts:query($car//query/*) ) | |
let $query := cts:or-query( ( cts:query( $cars//query/*) ) ) | |
let $_ := | |
cts:highlight( $car, $query, | |
local:alert($cts:queries,$cars)) | |
return xdmp:document-insert( | |
local:uri-for-car($car/maker, $car/model, $car/year), $car ) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(: showing reverse queries :) | |
declare function local:uri-for-car($maker, $model, $year) { | |
fn:concat('/cars/', $maker, '-', $model, '.xml') } ; | |
declare function local:tweet($username, $password, $message) { | |
let $options := <options xmlns="xdmp:http"> | |
<authentication method="basic"> | |
<username>{$username}</username> | |
<password>{$password}</password> | |
</authentication> | |
</options> | |
return xdmp:http-post( | |
fn:concat("http://twitter.com/statuses/update.xml?status=", | |
xdmp:url-encode($message) ), $options) }; | |
declare function local:alert($query,$cars){ | |
for $car in $cars/car[cts:contains(.,$query)] | |
let $maker := $car/maker | |
let $model := $car/model | |
let $year := $car/year | |
return | |
local:tweet( "test_kelly", "test_kelly2", | |
fn:concat("Match found for ", $maker , " " , $model, " of ", $year) | |
) }; | |
let $car := <car> | |
<maker country="jp">Honda</maker> | |
<model>Odyssey</model> | |
<year>2006</year> | |
<!-- Changing to Sedan gives a lot more results --> | |
<type>Minivan</type> | |
<query> { cts:or-query( | |
( cts:word-query("minivan","case-insensitive"), | |
cts:word-query("honda","case-insensitive"), | |
cts:word-query("odyssey","case-insensitive"), | |
cts:word-query("japan","case-insensitive")))} </query> | |
<desc>The Honda Odyssey is a minivan manufactured by Japanese automaker Honda since 1994, marketed worldwide, and now in its third (North America) and fourth generations (Japan).</desc> | |
</car> | |
let $cars := cts:search( fn:doc(), cts:query($car//query/*) ) | |
let $query := cts:or-query( ( cts:query( $cars//query/*) ) ) | |
let $_ := | |
cts:highlight( $car, $query, | |
local:alert($cts:queries,$cars)) | |
return xdmp:document-insert( | |
local:uri-for-car($car/maker, $car/model, $car/year), $car ) | |
(: go to twitter.com/test_kelly and see it yourself :) | |
(: introduce alerting application :) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment