[ 
https://issues.apache.org/jira/browse/SOLR-3127?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13235940#comment-13235940
 ] 

Hoss Man commented on SOLR-3127:
--------------------------------

whitespace is a significant meta character to dismax (and for that matter, the 
main lucene QUeryParser as well) ... it indicates the seperation betwen 
optional clauses.

the query parsing structure is independent of the analyzer used, so the fact 
that a  KeywordTokenizerFactory is used on the field in question is irrelevant, 
you might have another qf that doens't have KeywordTokenizerFactory so even if 
dismax tried to guess that it should treat the entire nput as all one string, 
it couldn't do that for other fields.

if you wnat your entire input to be treated as a literal, without treating 
whitespace as a meta-character, it needs to be quoted, or consider using an 
alternative parser (ie: the "field" QParser is designed for this type of "i 
want to query a single field for a specific value" type situation.
                
> Dismax to honor the KeywordTokenizerFactory when querying with multi word 
> strings
> ---------------------------------------------------------------------------------
>
>                 Key: SOLR-3127
>                 URL: https://issues.apache.org/jira/browse/SOLR-3127
>             Project: Solr
>          Issue Type: Improvement
>          Components: query parsers
>    Affects Versions: 3.5
>            Reporter: Zac Smith
>            Priority: Minor
>              Labels: dismax
>
> When using the KeywordTokenizerFactory with a multi word search string, the 
> dismax query created is not very useful. Although the query analzyer doesn't 
> tokenize the search input, each word of the input is include in the search.
> e.g. if searching for 'chicken stock' the dismax query created would be:
> +(DisjunctionMaxQuery((ingredient_synonyms:chicken^0.6)~0.01) 
> DisjunctionMaxQuery((ingredient_synonyms:stock^0.6)~0.01)) 
> DisjunctionMaxQuery((ingredient_synonyms:chicken stock^0.6)~0.01)
> Note that although the query analyzer does not tokenize the term 'chicken 
> stock' into 'chicken' and 'stock', they are still included and required in 
> the search term.
> I think the query created should be just:
> DisjunctionMaxQuery((ingredient_synonyms:chicken stock)~0.01)
> (or at least not have the individual terms as should match, not must match so 
> you could configure with MM.
> Example field type:
> <fieldType name="keyword_test" class="solr.TextField" 
> positionIncrementGap="100" autoGeneratePhraseQueries="false">
>       <analyzer type="index">
>               <tokenizer class="solr.KeywordTokenizerFactory" />
>       </analyzer>
>       <analyzer type="query">
>               <tokenizer class="solr.KeywordTokenizerFactory" />
>       </analyzer>
> </fieldType>

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to