none
Difference between fielded search and navigational search RRS feed

  • Question

  • Is there any specific reason to use navigational API, the same can be acheieved by performing fielded search on the field.

     

    Tuesday, May 17, 2011 12:03 AM

Answers

  • From the point of view of search performance, navigation vs filter() should not have any performance differences. --The QR Server will rewrite the navigation parameter into a filter statement. I found the following when researching this:

    Querying using navigation:

    Terms in the navigation parameter are converted into filters with a small difference: when you use the boundary search symbols (^ and $) they are converted into boundary search tokens. This does not happen if you use the filter operator manually. Because terms in the navigation parameter are separate from your query it is very easy to resubmit the search using additional refinements when using the navigation parameter. Please note that terms in the navigation parameter are applied against the entire query.

    Querying using filters:

    Please note that unless otherwise noted above, this information also applies to terms added with the navigation parameter.

    The filter operator is generally used when filtering on metadata within a query. Filtered terms are not used in ranking and are not used when creating dynamic teasers, and by default linguistics are turned off. Filters may be applied against an entire query or against part of it. Because the filter must be specified within the query parameter, it is often easiest to use this method when the filter will be applied as part of the original query, rather than as a refiner against a query that was previously submitted (such as when a customer clicks on a navigator to refine the results). 


    Patrick Schneider | Microsoft | Enterprise Search Group | Support Escalation Engineer | http://www.microsoft.com/enterprisesearch
    Friday, June 3, 2011 1:42 PM

All replies

  • Hi Shikha_m,

     

    There is a difference in the FQL for both. For the filter you are usesnig a syntax like queryterm:filter(field)

    For navigation you need something like navigators(n1,n2,n3), navigator1.modifier1, .,,,

    Ok this is for sure not exactly like FQL but you can check the docu for exact syntax.

    I am not really sure if there is some kind of a great difference in the internal FAST implementation, but theoretically the filter will aply on the whole index and then the results will be conjuncte in accordance to the filter criteria

    If using navigators then by choosing a navigator you are drilling down in the already computed result set, so the already computed result set is narrowed by some criterias.

    So if it is really so, navigation should be more performant in a case you need navigation and not filtering.

    I hope someone from FAST can say more about this, because for sure they know much more about how both filterring and navigation are handled internally and if my statement is true.

     

    BR

    Thursday, May 26, 2011 11:30 AM
  • I have never tested this but I would guess the two would return the same performance. Certainly, I have never heard any recommendations for one way or the other. However, make sure you use the filter() operator as LinaLina1 points out if you're using standard FQL fielded search. This ensures no linguistic or rank operations are executed on that portion of the query.

    Functionally-speaking, however, using the navigation API might effect the buckets returned whereas the FQL would not. For instance, if for attribute A, I have five navigator buckets, b1 - b5. If I submit b2 as a filter using the navigator API, when the results return, b2 should no longer be available as an available bucket. On the other hand, if I were to build an fql expression filter(a:b2), I would certainly get the b2 bucket in my A navigator.

    Tuesday, May 31, 2011 1:37 PM
  • From the point of view of search performance, navigation vs filter() should not have any performance differences. --The QR Server will rewrite the navigation parameter into a filter statement. I found the following when researching this:

    Querying using navigation:

    Terms in the navigation parameter are converted into filters with a small difference: when you use the boundary search symbols (^ and $) they are converted into boundary search tokens. This does not happen if you use the filter operator manually. Because terms in the navigation parameter are separate from your query it is very easy to resubmit the search using additional refinements when using the navigation parameter. Please note that terms in the navigation parameter are applied against the entire query.

    Querying using filters:

    Please note that unless otherwise noted above, this information also applies to terms added with the navigation parameter.

    The filter operator is generally used when filtering on metadata within a query. Filtered terms are not used in ranking and are not used when creating dynamic teasers, and by default linguistics are turned off. Filters may be applied against an entire query or against part of it. Because the filter must be specified within the query parameter, it is often easiest to use this method when the filter will be applied as part of the original query, rather than as a refiner against a query that was previously submitted (such as when a customer clicks on a navigator to refine the results). 


    Patrick Schneider | Microsoft | Enterprise Search Group | Support Escalation Engineer | http://www.microsoft.com/enterprisesearch
    Friday, June 3, 2011 1:42 PM