(10/07/20 4:26), Robert Muir (JIRA) wrote:
      [ 
https://issues.apache.org/jira/browse/LUCENE-2458?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Robert Muir resolved LUCENE-2458.
---------------------------------

     Resolution: Fixed

Committed revision 965585 / 965592 (3x)

queryparser makes all CJK queries phrase queries regardless of analyzer
-----------------------------------------------------------------------

                 Key: LUCENE-2458
                 URL: https://issues.apache.org/jira/browse/LUCENE-2458
             Project: Lucene - Java
          Issue Type: Bug
          Components: QueryParser
            Reporter: Robert Muir
            Assignee: Robert Muir
            Priority: Blocker
             Fix For: 3.1, 4.0

         Attachments: LUCENE-2458.patch, LUCENE-2458.patch, LUCENE-2458.patch, 
LUCENE-2458.patch


The queryparser automatically makes *ALL* CJK, Thai, Lao, Myanmar, Tibetan, ... 
queries into phrase queries, even though you didn't ask for one, and there 
isn't a way to turn this off.
This completely breaks lucene for these languages, as it treats all queries 
like 'grep'.
Example: if you query for f:abcd with standardanalyzer, where a,b,c,d are chinese characters, you get a 
phrasequery of "a b c d". if you use cjk analyzer, its no better, its a phrasequery of  "ab bc 
cd", and if you use smartchinese analyzer, you get a phrasequery like "ab cd". But the user 
didn't ask for one, and they cannot turn it off.
The reason is that the code to form phrase queries is not internationally 
appropriate and assumes whitespace tokenization. If more than one token comes 
out of whitespace delimited text, its automatically a phrase query no matter 
what.
The proposed patch fixes the core queryparser (with all backwards compat kept) 
to only form phrase queries when the double quote operator is used.
Implementing subclasses can always extend the QP and auto-generate whatever 
kind of queries they want that might completely break search for languages they 
don't care about, but core general-purpose QPs should be language independent.
Hello,

After committed this, my junit tests don't work. The tests
are for my own plugin for FastVectorHighlighter that use
2-gram analyzer. To pass the tests, I have to quote test data
or call setAutoGeneratePhraseQueries( true ).

I think I need chance to set setAutoGeneratePhraseQueries()
to true in Solr. Without it, clients have to quote query string.

Therefore, I'd like to introduce something like
<setAutoGeneratePhraseQueries>true or false</setAutoGeneratePhraseQueries>
tag in solrconfig.xml... Is it a bad idea?

I might be missing something here... Please advise me.

Koji

--
http://www.rondhuit.com/en/


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to