FAQ
Cheers,
Out of interest, how did you go about it in the end?


jloken wrote:
Hi,

I posed a similar question on 09 May 08.

The response was as below. I did not go down this route however, as a
wild carded 'exact' phrase is in a way contradictory.
Regards
Jon



Hi,

Here's a searchable mailing list archive:
http://www.gossamer-threads.com/lists/lucene/java-user/

As regards the wildcard phrase queries, here's one way I think you could
do it, but it's a bit of extra work. If you're using QueryParser, you'd
have to override the "getFieldQuery" method to use span queries instead
of phrase queries.

A phrase query can be implemented as a span query with a span or "slop"

factor of 1. So, once you have the PhraseQuery object, you would:

1. Extract the terms
2. For each one, check if it contains a "*" or a "?"
3. If it does, create a WildcardQuery using that term, and re-write it
using IndexReader.rewrite method. This expands the wildcard query into
all it's matches.
4. Create an array of SpanTermQuery objects, (one SpanTermQuery for each
term that matched you wildcard); then add that array to a SpanOrQuery.
5. Repeat 2 to 4 for each wildcard term in the phrase.
6. Finally (!), create a SpanNearQuery, adding all the original terms in
order, but substituting your SpanOrQuerys for the wildcard terms. Use a
slop of 1, and set the inOrder flag to true.

So, essentially, you'd end up with: (you'll have to excuse me if I
haven't rendered the span queries correctly as strings here - but this
should give the general idea...)

spanNear[boiler (spanOr[replacement replacing])]

So it will accept *either* "replacement" or "replacing" adjacent to
"boiler", which is what you want.

As you can see, it's a bit of work - but if you add this functionality
to the QueryParser, you'll can re-use it a lot!

Hope that helps!

-JB






-----Original Message-----
From: mick l
Sent: 24 June 2008 13:29
To: java-user@lucene.apache.org
Subject: Wildcard and Literal Searches combined


Folks,
My users require wildcard searches. Sometimes their search phrases
contain spaces. I am having trouble trying to implement a wildcard
search on strings containing spaces, so if the term includes spaces I
force a literal search by adding double quotes to the search term.
So the search string for 'Dublin' becomes search term (Dublin*) whereas
search string 'Dublin City' becomes ("Dublin City")


If I use (Dublin City*) I get all instances of Dublin OR City in the
results which is not what I am looking for.

Is there any way I can combine the wildcard search and the literal?

Heres my existing code. Its in c# with Lucene.Net

//if input has spaces we do a literal search if (sSearchQuery.IndexOf("
") < 0) { sSearchQuery = "(" + sSearchQuery + "*)"; } else {
sSearchQuery = "(\"" + sSearchQuery + "\")"; } IndexSearcher searcher =
new IndexSearcher(sIndexLocation); Hits oHitColl =
searcher.Search(oParser.Parse(sSearchQuery));

Thanks folks
--
View this message in context:
http://www.nabble.com/Wildcard-and-Literal-Searches-combined-tp18089950p
18089950.html
Sent from the Lucene - Java Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org


______________________________________________
This email has been scanned by Netintelligence
http://www.netintelligence.com/email



BiP Solutions Limited is a company registered in Scotland with Company
Number SC086146 and VAT number 383030966 and having its registered office
at Park House, 300 Glasgow Road, Shawfield, Glasgow, G73 1SQ
****************************************************************************
This e-mail (and any attachment) is intended only for the attention of the
addressee(s). Its unauthorised use, disclosure, storage or copying is not
permitted. If you are not the intended recipient, please destroyall copies
and inform the sender by return e-mail.
This e-mail (whether you are the sender or the recipient) may be
monitored, recorded and retained by BiP Solutions Ltd.
E-mail monitoring/ blocking software may be used, and e-mail content may
be read at any time. You have a responsibility to ensure laws are not
broken when composing or forwarding e-mails and their contents.
****************************************************************************

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org

--
View this message in context: http://www.nabble.com/Wildcard-and-Literal-Searches-combined-tp18089950p18090884.html
Sent from the Lucene - Java Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org

Search Discussions

Discussion Posts

Previous

Follow ups

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 3 of 6 | next ›
Discussion Overview
groupjava-user @
categorieslucene
postedJun 24, '08 at 12:29p
activeJun 25, '08 at 9:21p
posts6
users4
websitelucene.apache.org

People

Translate

site design / logo © 2022 Grokbase