Hi,<div><br></div><div>For me having two query engines are fantastic because there is a method to easily compare results and performance and, sometimes, discover that different approach offers totally different results and both could be right results. Please note that, despite I'm using Nepoogle, I can call Query:QueryParser() so results are the same results obtained using the same query in KRunner, or Dolphin if it's working in your system.</div>

<div><br></div><div>As an example I will try to locate all videoclips from Miryo so my first thought is:</div><div><br></div><div><b>miryo and videoclip</b></div><div><br></div><div>This is the Nepoogle's output using own SPARQL engine:</div>

<div><br></div><div><b>ignacio@misaki:~> nepoogle miryo and videoclip 2>/dev/null                                                                                                                              </b></div>

<div><div><b>Querying Nepomuk                                                                                                                                                                    </b></div><div><b>                                                                                                                                                                                    </b></div>

<div><b>.../Miryo/[MV] Miryo - 사랑해 사랑해 (Feat 써니_소녀시대) (2012).mkv, [MV] Miryo - 사랑해 사랑해 (Feat 써니_소녀시대) (2012), Video</b></div><div><b>.../Miryo/[MV] Miryo - 사랑해 사랑해 (Feat 써니_소녀시대) (2012).webm, Video                                                       </b></div>

<div><b>.../Miryo/[MV] Miryo - Dirty (2012).mkv, [MV] Miryo - Dirty (2012), Video                                                          </b></div><div><b>.../Miryo/[MV] Oh Won Bin - I Love You And I Love You (Ft. Miryo).mkv, [MV] Oh Won Bin - I Love You And I Love You (Ft. Miryo), Video                                                                                                                                                                                  </b></div>

<div><b>.../Brown Eyed Girls/Sign/[DVDRip] BEG - Sign (Japanese version)(2011).mkv, Video                                                                   </b></div><div><b><br></b></div><div><b>5 records found in 1.74870721 seconds.</b></div>

<div><b>--</b></div><div><b>Powered by nepoogle v0.9git (2012-xx-xx)</b></div></div><div><br></div><div>Note: I remove the full path to files and add "..." manually.</div><div><br></div><div>As you could see Nepoogle found 5 results and this is right. Well I cheat a little bit because before doing this query I knew the solution ;).</div>

<div><br></div><div>So for fun let's do the same query using Query::QueryParser(). This is easy because I only need to add in Nepoogle e0 prefix to the query:</div><div><br></div><div><div><font face="'courier new', monospace"><b>ignacio@misaki:~> nepoogle e0 miryo and videoclip 2>/dev/null</b></font></div>

<div><font face="'courier new', monospace"><b>Querying Nepomuk</b></font></div><div><font face="'courier new', monospace"><b><br></b></font></div><div><font face="'courier new', monospace"><b><br>
</b></font></div>
<div><font face="'courier new', monospace"><b>0 records found in 0.022747 seconds.</b></font></div><div><font face="'courier new', monospace"><b>--</b></font></div><div><font face="'courier new', monospace"><b>Powered by nepoogle v0.9git (2012-xx-xx)</b></font></div>

</div><div><br></div><div>What?, 0 records? How Query::QueryParser() it's failing to locate files with and so easy query? This is a bug.</div><div><br></div><div><b>But not</b>, there is not a bug at all :), there is only a natural behavior related to the logic used to build the queries and the explanation is really simple.</div>

<div><br></div><div>If RT1 is a result set obtained by filtering using term1 and RT2 if a result set obtained filtering using term 2, Nepoogle are doing a set union <span style="background-color:rgb(255,255,255);font-family:sans-serif;font-size:13px;line-height:19px">of both results to obtain the result set. In set theory the operation is:</span><span style="background-color:rgb(255,255,255);font-family:sans-serif;font-size:13px;line-height:19px"> RT1 U RT2,</span></div>

<div><font face="sans-serif"><span style="line-height:19px"><br></span></font></div><div><font face="sans-serif"><span style="line-height:19px">On the other side, if RT is a result set obtained filtering using term 1 and term2 Query::QueryParser() results are obtained filtering in only one set for both terms to obtain the result set. In set theory the operation is: RT.</span></font></div>

<div><br></div><div>About our 5 results, Nepoogle is locating results because it's searching in two different sets, in this case tags "miryo" and "videoclip", and Query::QueryParser() is not locating anything because there is no set where "miryo" and "videoclip" are together. Don't be fooled by the fact both cases are tags, at relational algebra level there are different sets.</div>

<div><br></div><div>Of course, this is happening only with raw text search because if I using the query <b>hastag:miryo and hastag:videoclip</b> with Query::QueryParser(), I obtained the 5 expected results :).</div><div>
<div>
<br></div><div>Nepoogle has the contrary problem. If I'm looking only for the words "miryo" and "videoclip" in the content of a text file Query::QueryParser() will return right results but Nepoogle will return also results with only one of the words, if the other word is in other set that is not necessarily the content of the text file.</div>

<div><br></div><div><br></div><div>In brief, and the main reason to write this mail, don't expect that Nepoogle and Nepomuk API offers always the same result sets and, when this happens this not necessarily be a bug. Think that this behavior happens every with web search engines :).</div>

<div><br></div>-- <br>Best wishes,<div>Ignacio</div><div><br></div><br>
</div>