Hello James,<div><br></div><div>Thank you for your reply,</div><div>I tried using the below code.As you said it matches the partial query if i remove the * but the thing is i am not sure is this the correct way to generate the auto completion. Can u tell me how can i generate the auto completion ? Or give me an example?</div>
<div><br></div><div><div>#include &lt;xapian.h&gt;</div><div>#include &lt;iostream&gt;</div><div>#include &lt;string&gt;</div><div>#include &lt;cstdlib&gt; // For exit().</div><div>#include &lt;cstring&gt;</div><div><br></div>
<div>using namespace std;</div><div><br></div><div>int main(int argc, char **argv)</div><div>try {</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>Xapian::WritableDatabase db(&quot;/home/example/xapian&quot;,</div>
<div><span class="Apple-tab-span" style="white-space:pre">                        </span>Xapian::DB_CREATE_OR_OPEN);</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>Xapian::TermGenerator indexer;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>Xapian::Stem stemmer(&quot;english&quot;);</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>indexer.set_stemmer(stemmer);</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>indexer.set_database(db);</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>indexer.set_flags(indexer.FLAG_SPELLING);</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>string para = &quot;master of business administration  master in c++ &quot;;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>Xapian::Document doc;</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>doc.set_data(para);</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>indexer.set_document(doc);</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>indexer.index_text(para);</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>db.add_document(doc);</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>db.commit();</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>Xapian::QueryParser parser;</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>parser.set_database(db);</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>parser.set_default_op(Xapian::Query::OP_AND);</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>parser.set_stemmer(stemmer);</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>parser.set_stemming_strategy(Xapian::QueryParser::STEM_SOME);</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>Xapian::Query query = parser.parse_query(&quot;master&quot;,</div>
<div><span class="Apple-tab-span" style="white-space:pre">                        </span>parser.FLAG_DEFAULT | parser.FLAG_SPELLING_CORRECTION</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>| parser.FLAG_AUTO_SYNONYMS | parser.FLAG_PARTIAL);</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>Xapian::Enquire enquire(db);</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>enquire.set_query(query);</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>Xapian::MSet mset = enquire.get_mset(0, 10);</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>for (Xapian::MSetIterator i = mset.begin(); i != mset.end(); i++) {</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>Xapian::Document doc = i.get_document();</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>string data = doc.get_data();</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>cout &lt;&lt; *i &lt;&lt; &quot;: [&quot; &lt;&lt; i.get_weight() &lt;&lt; &quot;]\n&quot; &lt;&lt; data &lt;&lt; &quot;\n&quot;;</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>cout &lt;&lt; flush;</div><div>}</div><div>catch (const Xapian::Error &amp;e) {</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>cout &lt;&lt; e.get_description() &lt;&lt; endl;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>exit(1);</div><div>}</div></div><div>
<br></div><div><br><div class="gmail_quote">On Sun, Oct 7, 2012 at 10:13 PM, James Aylett <span dir="ltr">&lt;<a href="mailto:james-xapian@tartarus.org" target="_blank">james-xapian@tartarus.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
A query string such as &quot;m*&quot; is using the wildcard expansion operator – if you want to use the partial support, you don&#39;t want the * at the end of your query string.<br>
<br>
It&#39;s also not clear from your message whether you&#39;ve set a database before trying to parse your query. You need to do this, because Xapian&#39;s wildcard support (which is what partial uses) is done at query time, expanding to all the possibly matching terms, rather than at index time in an n-gram analyzer style.<br>

<br>
If you still can&#39;t get this to work, try posting a complete program rather than just a snippet.<br>
<br>
James<br>
<div><div class="h5"><br>
<br>
On 4 Oct 2012, at 18:20, Naveen A.N. &lt;<a href="mailto:naveen@searchlabs.org">naveen@searchlabs.org</a>&gt; wrote:<br>
<br>
&gt; Hello,<br>
&gt;<br>
&gt; Do xapian has analyzer like EdgeNGram to use it for autocomplete.<br>
&gt;<br>
&gt; I am trying to use the auto completion using xapian.<br>
&gt; For example:<br>
&gt; e<br>
&gt; ex<br>
&gt; exa<br>
&gt; exam<br>
&gt; example<br>
&gt; etc..<br>
&gt; so that we can get it.<br>
&gt; I tried to use using the Partial flag but it dose not work Xapian::Query query = parser.parse_query(&quot;m*&quot;,parser.FLAG_PARTIAL);<br>
&gt; Do you have any example or any tutorial is appreciated.<br>
&gt;<br>
&gt; --Naveen.<br>
</div></div>&gt; _______________________________________________<br>
&gt; Xapian-devel mailing list<br>
&gt; <a href="mailto:Xapian-devel@lists.xapian.org">Xapian-devel@lists.xapian.org</a><br>
&gt; <a href="http://lists.xapian.org/mailman/listinfo/xapian-devel" target="_blank">http://lists.xapian.org/mailman/listinfo/xapian-devel</a><br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
 James Aylett, occasional trouble-maker<br>
 <a href="http://xapian.org" target="_blank">xapian.org</a><br>
<br>
</font></span></blockquote></div><br></div>