From: Sidharth A. <sag...@as...> - 2010-07-16 21:51:59
|
Thanks for the reply. I understand the concept. But it looks like searching for an exact phrase or word in the document, What if i want to provide a search button in the webpage, where a user can enter any phrase, which is then searched over the collection specified. For ex: I have a collection called "TestColl" in which i have 50 XML instances, how will i write this query using lucene. Similar type of example is given in " http://en.wikibooks.org/wiki/XQuery/Keyword_Search" but thats for eXist 1.3. --------------------------------------------------------------------------------------------------------------------------------------------------------- On Fri, Jul 16, 2010 at 1:00 AM, Roy Walter <gar...@ya...>wrote: > This is missing a few things: > > let $hits := ft:query($search-string) > > The error message is explicit. You need to say what is being searched > (collection or document) and where your $search-string is to be found. For > example: > > let $hits := collection("/papers")//p[ft:query(., 'drugs')] > > -- Roy > > ------------------------------------------------------------------------------------------------------------------------------------------------------------ > Sidharth Agarwal wrote: > > The documentation in page : * > http://en.wikibooks.org/wiki/XQuery/Keyword_Search ,* seems to be for > eXist 1.3 version. > I am trying to do the same thing in eXist 1.4. > What all changes i need to make to get the same result. > > I have made the following changes in the search.xq code, as was stated in > one of the thread. > > 1. kwic.xql can be referenced now as follows: BEFORE: import module > namespace kwic="http://exist-db.org/xquery/kwic" at > "xmldb:exist:///db/test/kwic.xql"; NOW: import module namespace kwic=" > http://exist-db.org/xquery/kwic"; > > 2. replace the "&=" syntax with lucene search syntax: BEFORE: let > $search-string := concat('$scope', '[. &= "', $filtered-q, '"]') let > $hits := util:eval($search-string) NOW: let $hits := > ft:query($search-string) > > 3. hit scoring is now built-in to lucene: BEFORE: let $sorted-hits := for > $hit in $hits let $keyword-matches := text:match-count($hit) let > $hit-node-length := string-length($hit) let $score := $keyword-matches div > $hit-node-length order by $score descending return $hit NOW: let $sortedhits > := for $hit in $hits order by ft:score($hit) descending return $hit > I am getting this error when i call " > http://localhost:8080/exist/rest/db/test/search.xq" > ERROR: Unexpectedly received 1 parameter(s) in call to function > 'ft:query()'. Defined function signatures are: ft:query($nodes as node()*, > $query as item()) node()* > [at line 18, column 14] > > Any suggestions. > > Thanks > Sidharth > > > |