I made the following changes to Omega, per the instructions in
http://www.xapian.org/docs/queryparser.html,
and wildcards do not work at all. I'm hoping its something simple.
/usr/lib/cgi-bin/omega/omega DB=pdf P=finan\*
(with or without the backslash)
returns no documents, even though there are over 3000 hits for
'finance', about the same for 'financial', and probably more.
...Ken
ken@phobos:~/xapian/xapian-omega-1.0.2$ diff -aur query.cc*
--- query.cc 2007-10-02 14:33:35.000000000 -0500
+++ query.cc~ 2007-07-04 19:38:41.000000000 -0500
@@ -218,6 +218,7 @@
qp.set_stemming_strategy(option["stem_all"] == "true" ?
Xapian::QueryParser::STEM_ALL : Xapian::QueryParser::STEM_SOME);
qp.set_stopper(new MyStopper());
qp.set_default_op(default_op);
+ qp.set_database(db);
// std::map::insert() won't overwrite an existing entry, so we'll
prefer
// probabilistic prefixes to boolean ones in the unlikely event
that both
// exist for the same term prefix. We'll also prefer the first
specified
@@ -236,17 +237,12 @@
}
try {
- query = qp.parse_query(query_string,
- Xapian::QueryParser::FLAG_BOOLEAN |
- Xapian::QueryParser::FLAG_PHRASE |
- Xapian::QueryParser::FLAG_LOVEHATE |
- Xapian::QueryParser::FLAG_WILDCARD);
+ query = qp.parse_query(query_string);
} catch (Xapian::QueryParserError &e) {
error_msg = e.get_msg();
return BAD_QUERY;
}
- qp.set_database(db);
Xapian::termcount n_new_terms = 0;
for (Xapian::TermIterator i = query.get_terms_begin();
i != query.get_terms_end(); ++i) {
On Tue, Oct 02, 2007 at 03:34:07PM -0500, Kenneth Loafman wrote:> I made the following changes to Omega, per the instructions in > > http://www.xapian.org/docs/queryparser.html, > > and wildcards do not work at all. I'm hoping its something simple. > > /usr/lib/cgi-bin/omega/omega DB=pdf P=finan\* > (with or without the backslash) > > returns no documents, even though there are over 3000 hits for > 'finance', about the same for 'financial', and probably more.You may be being tripped up by your shell escaping there. Try P='finan*' instead of what you have. Cheers, James -- /--------------------------------------------------------------------------\ James Aylett xapian.org james@tartarus.org uncertaintydivision.org
Kenneth Loafman wrote:> I made the following changes to Omega, per the instructions in > > http://www.xapian.org/docs/queryparser.html, > > and wildcards do not work at all. I'm hoping its something simple. > > /usr/lib/cgi-bin/omega/omega DB=pdf P=finan\* > (with or without the backslash) > > returns no documents, even though there are over 3000 hits for > 'finance', about the same for 'financial', and probably more.(I'm assuming your diff is reversed, so that "-" lines are those which you added. If that's wrong, I'm very confused.) It looks like you've changed the flags for the query parser "parse_query" invocation correctly. However, you've moved the "qp.set_database(db)" call to after this invocation. As a result, the wildcard expansion code can't lookup the terms in the database, so you end up with no matches. I expect it will work if you move the set_database() call back to its original location. -- Richard
[Please keep discussions on list.] On Tue, Oct 02, 2007 at 04:38:58PM -0500, Kenneth Loafman wrote:> > You may be being tripped up by your shell escaping there. Try > > P='finan*' instead of what you have. > > That's what the escape char is for (bash). Quotes do not help either, > however, 'finan*' finds 295, where 'finan\*' finds 0. Does not work > using the web query either. Strange results.I didn't know which shell you were using; in general I prefer single quotes for avoiding shell globbing (but I can't explain why). Richard has pointed out where your problem is, which I missed. J -- /--------------------------------------------------------------------------\ James Aylett xapian.org james@tartarus.org uncertaintydivision.org