[Xapian-discuss] Re: Filtering Search Results By Date in PHP

Benny Chan misterchan at gmail.com
Thu Jul 26 22:27:51 BST 2007


OK,

I found my mistake below. I actually left out the friggin' queryparser:

        $query_parser = new_queryparser();

        $rp = new_datevaluerangeprocessor(1, true);
        queryparser_add_valuerangeprocessor($query_parser, $rp);

So now I can search for ranges and stuff. When I use a search string like

"1/1/2000..1/1/2007"

I print out the parsed query and get:

VALUE_RANGE 1 20000101 20070101

I look at the term list for a document and it shows

D20050101 1 1
M200501 1 1
Y2005 1 1

So I'm thinking the documents are being indexed correctly. BUT I'm still not
getting any results. Any ideas guys?? = ( Thanks for reading.

Benny



On 7/26/07, Benny Chan <misterchan at gmail.com> wrote:
>
> Hello All,
>
> I am trying to make it so that I can do things like "cat
> 1/23/2004..5/24/2005" but I am getting back 0 results. Here is my index
> script:
>
>          document_id: field=ref unique=Q boolean=Q
>          document_title: field=title weight=100 unhtml index=S
>          url: field=url
>          document_text: field=document_text unhtml index
>          abstract: field=abstract
>          doc_date: field=doc_date date=yyyymmdd
>          category: field=category boolean=XC
>
>
> I can then index documents fine and search them regularly using the
> following PHP:
>
>         $query_parser = new_queryparser();
>
>         $rp = new_datevaluerangeprocessor(1, true);
>         queryparser_add_valuerangeprocessor($rp);
>
>         //set the stemmer and turn on the stemming strategy
>         queryparser_set_stemmer($query_parser, $stemmer);
>         queryparser_set_stemming_strategy($query_parser, 1);
>
>         //set the database
>         queryparser_set_database($query_parser, $db);
>
>         //set prefix
>         queryparser_add_boolean_prefix($query_parser, "category", "XC");
>         //add prefix so you can search within titles
>         queryparser_add_prefix($query_parser, "title", "S");
>
>         //parse and create the query
>         $query = queryparser_parse_query($query_parser,
> strtolower($_REQUEST["search"]));
>
> I proceed to index one document only with the date "20050101". I then try
> the query string "20010101..20070101" which is a pretty wide range, but I
> get no results. I'm thinking that I may be entering the query string
> incorrectly or I may be calling the function incorrectly in the php code.
> The indexing of the document seems to be ok. If anyone can shed some light
> on this, I would appreciate it a lot. Thanks for reading.
>
> Benny
>


More information about the Xapian-discuss mailing list