yes, PrefixQuery will help.

On 5/24/06, mark harwood <[EMAIL PROTECTED]> wrote:

>>What will happen if I send PrefixQuery

A search returns a list of docs - you want a list of
words which is why I suggested using the IndexReader
"terms" APIs which PrefixQuery uses internally.

If you are not in a position to try the more complex
solution I outlined earlier (this bases suggestions on
multiple terms in the query string) then you *could*
use PrefixQuery as follows:

        IndexReader
reader=IndexReader.open("/indexes/nasa");
        String incompleteWord="Am";
        PrefixQuery pq=new PrefixQuery(new
Term("contents",incompleteWord.toLowerCase()));
        HashSet suggestedTerms=new HashSet();

pq.rewrite(reader).extractTerms(suggestedTerms);
        for (Iterator iter =
suggestedTerms.iterator(); iter.hasNext();)
        {
            Term term = (Term) iter.next();
            System.out.println(term.text());

        }

Using this technique on a completely free-text field
(i.e. something other than the "country" field in your
example) will probably make poorly informed
suggestions and I would refer to my previous post for
a better solution.


Cheers
Mark





--- Vikas Khengare <[EMAIL PROTECTED]>
wrote:

>
>
> Hi Mark
>
>
>
>       You are right; I want suggestions from doc
> content only not
> general words. What will happen if I send
> PrefixQuery in each char input
> from user then I will get results [No problem about
> number of hits to
> show user] using AJAX. So when user type "a" Onkeyup
> I will send query
> through AJAX to search engine with prefixquery then
> I will get results.
>
> e.g. Field("Country","America")
>
>       Field("Country","Africa")
>
>       Field("Country","Aegentina")
>
>
>
> So If search in "Country" for "a*" it will return me
> all values which
> are starting from "a" So I will get results as I
> want.
>
>
>
> Is this one right?
>
>
>
> Or What is other way to do so?
>
>
>
>
>
>
>
>
>
> -----Original Message-----
> From: mark harwood [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, May 24, 2006 3:37 PM
> To: java-user@lucene.apache.org
> Subject: Re: Can I do "Google Suggest" Like Search?
> - - - from - -
> -vikas
>
>
>
> Tips:
>
>
>
> 1) Don't send to 3 mail lists when 1 will do please
>
> continue this conversation on java-user only.
>
>
>
> 2) Most "suggest" tools work off an index of
> previous
>
> searches (not documents). Do you have a large set of
>
> searches? If not, making sensible suggestions based
> on
>
> document content can be much more compute intensive.
>
> My assumption here is you are having to work with
> doc
>
> content.
>
>
>
> 3) You don't need to go to the expense of running a
>
> query and ranking and scoring documents - look at
> the
>
> lower level APIs terms() and termDocs() - use them
> to
>
> find the matching terms
>
>
>
> 4) word suggestions ideally shouldn't be independent
>
> of each other - look at completed words in the query
>
> string and use them to inform the selection of
>
> suggestions for the incomplete term being typed. The
>
> termDocs()/termPositions() apis give you all the
> data
>
> you need to establish what docs/positions exist for
>
> completed terms and these can be cross-referenced
> with
>
> the list of docs/positions for the "alternative"
> terms
>
> under consideration. A high proximity between
>
> completed term occurences and a suggested term's
>
> occurences makes a strong candidate. A fast way to
> do
>
> proximity tests might be to compared sorted arrays
> of
>
> numbers where each number represents a term using a
>
> function like:
>
>   termspaceNumber=[DocNumber * maxNumTermsPerDoc]+
>
> termPositionInDoc
>
>
>
> You could then compare long[]completedTermOccurences
>
> with long[]suggestedAlternativeTermOccurences
> looking
>
> for matches where numbers differ by 1 or 2.
>
>
>
> A faster (rougher) comparison solution which ignored
>
> word proximity would be just to compare bitsets of
> doc
>
> ids looking for high levels of
>
> overlap(intersection/union).
>
>
>
> You can use TermEnum.docFreq() to quickly rule out
>
> very rare words from your calculations.
>
>
>
> Cheers,
>
> Mark
>
>
>
> Send instant messages to your online friends
> http://uk.messenger.yahoo.com
>
>
>
>
---------------------------------------------------------------------
>
> To unsubscribe, e-mail:
> [EMAIL PROTECTED]
>
> For additional commands, e-mail:
> [EMAIL PROTECTED]
>
>
>
>
========================================================================
> ==========================
>
>
>
> with best regards
>
> from .........
>
> vikas r. khengare
>
> Veritas Software India Private Ltd.
>
> Symantec Corporation
>
> Pune, India
>
>
>
>                         [ Enjoy your life today....
> because
=== message truncated ===




___________________________________________________________
All New Yahoo! Mail – Tired of [EMAIL PROTECTED]@! come-ons? Let our SpamGuard 
protect
you. http://uk.docs.yahoo.com/nowyoucan.html

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Reply via email to