Hello James,<div>The thing is the code works perfectly but that is not the way that auto completion work.I am basically from JAVA lucene and i am sure that lucene and xapian are different but i expect that all the features are same.</div>

<div>In lucene we index the document using Edge N gram analyzer .so the document &quot;xapian is search engine &quot; will be generated as &quot;xapian&quot;,&quot;xapian is &quot;,&quot;xapian is search&quot;,&quot;xapian is search engine&quot;. But in my code in xapian how it works is it gives only the &quot;xapian is search engine&quot;. And i am sure that you are aware of how auto completion works.</div>

<div><br></div><div>I have the below questions.</div><div>1) Do xapian has Edge N gram analyzer or similar thing?</div><div>2) why there is only examples for basic indexing and searching ?But not for important features like facets and filtering, auto completion etc.</div>

<div>   only snippets are available.Do you have some working example of facets,filters in c++? If i missed the links can you provide them? </div><div><br><div class="gmail_quote">On Sun, Oct 7, 2012 at 11:34 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">I&#39;m not sure I understand. You have code that works, and you are using FLAG_PARTIAL the way it is documented. Why are you not sure that what you&#39;re doing is correct? Is there something about the documentation that is confusing, or missing? Obviously we&#39;d like to improve things wherever possible to avoid other people being uncertain in future.<br>


<br>
There&#39;s nothing about the code I can see that looks wrong, although it&#39;s been a while since I regularly read C++ so I might be missing something obvious.<br>
<span><font color="#888888"><br>
James<br>
</font></span><div><div><br>
On 7 Oct 2012, at 18:16, Naveen A.N. &lt;<a href="mailto:naveen@searchlabs.org" target="_blank">naveen@searchlabs.org</a>&gt; wrote:<br>
<br>
&gt; Hello James,<br>
&gt;<br>
&gt; Thank you for your reply,<br>
&gt; 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?<br>


&gt;<br>
&gt; #include &lt;xapian.h&gt;<br>
&gt; #include &lt;iostream&gt;<br>
&gt; #include &lt;string&gt;<br>
&gt; #include &lt;cstdlib&gt; // For exit().<br>
&gt; #include &lt;cstring&gt;<br>
&gt;<br>
&gt; using namespace std;<br>
&gt;<br>
&gt; int main(int argc, char **argv)<br>
&gt; try {<br>
&gt;<br>
&gt;       Xapian::WritableDatabase db(&quot;/home/example/xapian&quot;,<br>
&gt;                       Xapian::DB_CREATE_OR_OPEN);<br>
&gt;       Xapian::TermGenerator indexer;<br>
&gt;       Xapian::Stem stemmer(&quot;english&quot;);<br>
&gt;       indexer.set_stemmer(stemmer);<br>
&gt;       indexer.set_database(db);<br>
&gt;       indexer.set_flags(indexer.FLAG_SPELLING);<br>
&gt;       string para = &quot;master of business administration  master in c++ &quot;;<br>
&gt;       Xapian::Document doc;<br>
&gt;       doc.set_data(para);<br>
&gt;       indexer.set_document(doc);<br>
&gt;       indexer.index_text(para);<br>
&gt;       db.add_document(doc);<br>
&gt;       db.commit();<br>
&gt;       Xapian::QueryParser parser;<br>
&gt;       parser.set_database(db);<br>
&gt;       parser.set_default_op(Xapian::Query::OP_AND);<br>
&gt;       parser.set_stemmer(stemmer);<br>
&gt;       parser.set_stemming_strategy(Xapian::QueryParser::STEM_SOME);<br>
&gt;       Xapian::Query query = parser.parse_query(&quot;master&quot;,<br>
&gt;                       parser.FLAG_DEFAULT | parser.FLAG_SPELLING_CORRECTION<br>
&gt;                                       | parser.FLAG_AUTO_SYNONYMS | parser.FLAG_PARTIAL);<br>
&gt;       Xapian::Enquire enquire(db);<br>
&gt;       enquire.set_query(query);<br>
&gt;       Xapian::MSet mset = enquire.get_mset(0, 10);<br>
&gt;<br>
&gt;       for (Xapian::MSetIterator i = mset.begin(); i != mset.end(); i++) {<br>
&gt;               Xapian::Document doc = i.get_document();<br>
&gt;               string data = doc.get_data();<br>
&gt;               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;;<br>
&gt;       }<br>
&gt;       cout &lt;&lt; flush;<br>
&gt; }<br>
&gt; catch (const Xapian::Error &amp;e) {<br>
&gt;       cout &lt;&lt; e.get_description() &lt;&lt; endl;<br>
&gt;       exit(1);<br>
&gt; }<br>
&gt;<br>
&gt;<br>
&gt; On Sun, Oct 7, 2012 at 10:13 PM, James Aylett &lt;<a href="mailto:james-xapian@tartarus.org" target="_blank">james-xapian@tartarus.org</a>&gt; wrote:<br>
&gt; 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>
&gt;<br>
&gt; 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>


&gt;<br>
&gt; If you still can&#39;t get this to work, try posting a complete program rather than just a snippet.<br>
&gt;<br>
&gt; James<br>
&gt;<br>
&gt;<br>
&gt; On 4 Oct 2012, at 18:20, Naveen A.N. &lt;<a href="mailto:naveen@searchlabs.org" target="_blank">naveen@searchlabs.org</a>&gt; wrote:<br>
&gt;<br>
&gt; &gt; Hello,<br>
&gt; &gt;<br>
&gt; &gt; Do xapian has analyzer like EdgeNGram to use it for autocomplete.<br>
&gt; &gt;<br>
&gt; &gt; I am trying to use the auto completion using xapian.<br>
&gt; &gt; For example:<br>
&gt; &gt; e<br>
&gt; &gt; ex<br>
&gt; &gt; exa<br>
&gt; &gt; exam<br>
&gt; &gt; example<br>
&gt; &gt; etc..<br>
&gt; &gt; so that we can get it.<br>
&gt; &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; &gt; Do you have any example or any tutorial is appreciated.<br>
&gt; &gt;<br>
&gt; &gt; --Naveen.<br>
&gt; &gt; _______________________________________________<br>
&gt; &gt; Xapian-devel mailing list<br>
&gt; &gt; <a href="mailto:Xapian-devel@lists.xapian.org" target="_blank">Xapian-devel@lists.xapian.org</a><br>
&gt; &gt; <a href="http://lists.xapian.org/mailman/listinfo/xapian-devel" target="_blank">http://lists.xapian.org/mailman/listinfo/xapian-devel</a><br>
&gt;<br>
&gt; --<br>
&gt;  James Aylett, occasional trouble-maker<br>
&gt;  <a href="http://xapian.org" target="_blank">xapian.org</a><br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; Xapian-devel mailing list<br>
&gt; <a href="mailto:Xapian-devel@lists.xapian.org" target="_blank">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>
<br>
--<br>
 James Aylett, occasional trouble-maker<br>
 <a href="http://xapian.org" target="_blank">xapian.org</a><br>
<br>
</div></div></blockquote></div><br></div>