You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by Akihiro Ito <ak...@enigmo.co.jp> on 2019/07/25 06:24:49 UTC

autoGeneratePhraseQueries does not work?

HI,

I am using Solr 7.7.1 in SolrCloud mode.

I’m getting a document I shouldn’t when searching with a TextField.
It looks like autoGeneratePhaseQuery is not working as it should, 
but I have no idea what is causing it.

The schema definition I use is as follows.

 <fieldType name=“trigram_type” class=“solr.TextField”
positionIncrementGap=“100” autoGeneratePhraseQueries=“true”>
   <analyzer type=“index”>
     <charFilter class=“solr.ICUNormalizer2CharFilterFactory” name=“nfkc”/>
     <charFilter class=“solr.PatternReplaceCharFilterFactory” pattern=“$”
replacement=“**“/>
     <tokenizer class=“solr.NGramTokenizerFactory” maxGramSize=“3"
minGramSize=“3” />
     <filter class=“solr.PatternReplaceFilterFactory”
pattern=“([^\s])\s[^\s]” replacement=“$1  ” replace=“all”/>
     <filter class=“solr.PatternReplaceFilterFactory” pattern=“^\s.*$”
replacement=“” replace=“all”/>
     <filter class=“solr.LengthFilterFactory” min=“3” max=“3"/>
     <filter class=“solr.LowerCaseFilterFactory”/>
     <filter class=“solr.ICUTransformFilterFactory” id=“Hiragana-Katakana”/>
   </analyzer>
   <analyzer type=“query”>
     <charFilter class=“solr.ICUNormalizer2CharFilterFactory” name=“nfkc”/>
     <tokenizer class=“solr.NGramTokenizerFactory” maxGramSize=“3"
minGramSize=“3” />
     <filter class=“solr.LowerCaseFilterFactory”/>
     
     <filter class=“solr.ICUTransformFilterFactory” id=“Hiragana-Katakana”/>
   </analyzer>
 </fieldType>


Following sample document is in Solr.

docs: [
{
 syo_id: “1237”,
 trigram: “aaabbbccc”,
 _version_: 1639992506850476000,
 timestamp: “2019-07-25T01:38:52.894Z”
}
]

If I execute the following query,it will hit the above document

q=trigram:aaaa&fq=syo_id:1237&debugQuery=on


Thanks,
Akihiro.





--
Sent from: http://lucene.472066.n3.nabble.com/Solr-User-f472068.html

Re: autoGeneratePhraseQueries does not work?

Posted by Akihiro Ito <ak...@enigmo.co.jp>.
Thank you for your reply.

I did not know about the sow parameter.
By specifying "sow = true" explicitly,
it has been confirmed that the search results are as expected.


akihiro:~$curl
"http://localhost:28983/solr/bmitems_A/select?q=trigram:aaaa&fq=syo_id:1237&sow=true&echoParams=none"
{
  "responseHeader":{
    "zkConnected":true,
    "status":0,
    "QTime":5},
  "response":{"numFound":0,"start":0,"maxScore":0.0,"docs":[]
  }}
akihiro:~$curl
"http://localhost:28983/solr/bmitems_A/select?q=trigram:aaaa&fq=syo_id:1237&echoParams=none"
{
  "responseHeader":{
    "zkConnected":true,
    "status":0,
    "QTime":7},
  "response":{"numFound":1,"start":0,"maxScore":26.75299,"docs":[
      {
        "syo_id":"1237",
        "trigram":"aaabbbccc",
        "_version_":1640006469631868928,
        "timestamp":"2019-07-25T05:20:48.834Z",
        "s_syo_name":"aaabbbccc"}]
  }}

Thanks, 
Akihiro. 



--
Sent from: http://lucene.472066.n3.nabble.com/Solr-User-f472068.html

Re: autoGeneratePhraseQueries does not work?

Posted by Yasufumi Mizoguchi <ya...@gmail.com>.
Hi,

Since Solr 7.0, sow(Split-on-Whitespace) parameter has set false as
implicit default.
Because autoGeneratePhraseQueries option's behavior depends on that
parameter,
you should add sow=true parameter to your query.

e.g)
q=trigram:aaaa&fq=syo_id:1237&debugQuery=on&sow=true

Thanks,
Yasufumi.

2019年7月25日(木) 15:25 Akihiro Ito <ak...@enigmo.co.jp>:

> HI,
>
> I am using Solr 7.7.1 in SolrCloud mode.
>
> I’m getting a document I shouldn’t when searching with a TextField.
> It looks like autoGeneratePhaseQuery is not working as it should,
> but I have no idea what is causing it.
>
> The schema definition I use is as follows.
>
>  <fieldType name=“trigram_type” class=“solr.TextField”
> positionIncrementGap=“100” autoGeneratePhraseQueries=“true”>
>    <analyzer type=“index”>
>      <charFilter class=“solr.ICUNormalizer2CharFilterFactory” name=“nfkc”/>
>      <charFilter class=“solr.PatternReplaceCharFilterFactory” pattern=“$”
> replacement=“**“/>
>      <tokenizer class=“solr.NGramTokenizerFactory” maxGramSize=“3"
> minGramSize=“3” />
>      <filter class=“solr.PatternReplaceFilterFactory”
> pattern=“([^\s])\s[^\s]” replacement=“$1  ” replace=“all”/>
>      <filter class=“solr.PatternReplaceFilterFactory” pattern=“^\s.*$”
> replacement=“” replace=“all”/>
>      <filter class=“solr.LengthFilterFactory” min=“3” max=“3"/>
>      <filter class=“solr.LowerCaseFilterFactory”/>
>      <filter class=“solr.ICUTransformFilterFactory”
> id=“Hiragana-Katakana”/>
>    </analyzer>
>    <analyzer type=“query”>
>      <charFilter class=“solr.ICUNormalizer2CharFilterFactory” name=“nfkc”/>
>      <tokenizer class=“solr.NGramTokenizerFactory” maxGramSize=“3"
> minGramSize=“3” />
>      <filter class=“solr.LowerCaseFilterFactory”/>
>
>      <filter class=“solr.ICUTransformFilterFactory”
> id=“Hiragana-Katakana”/>
>    </analyzer>
>  </fieldType>
>
>
> Following sample document is in Solr.
>
> docs: [
> {
>  syo_id: “1237”,
>  trigram: “aaabbbccc”,
>  _version_: 1639992506850476000,
>  timestamp: “2019-07-25T01:38:52.894Z”
> }
> ]
>
> If I execute the following query,it will hit the above document
>
> q=trigram:aaaa&fq=syo_id:1237&debugQuery=on
>
>
> Thanks,
> Akihiro.
>
>
>
>
>
> --
> Sent from: http://lucene.472066.n3.nabble.com/Solr-User-f472068.html
>

Re: autoGeneratePhraseQueries does not work?

Posted by Alexandros Paramythis <al...@contexity.ch>.
Hi Akihiro,

This behavior is caused by the NGramTokenizerFactory, which is used both 
during analysis and querying in the configuration.

In short:
* During indexing, this filter causes the token 'aaa' to be generated 
from the string 'aaabbbccc' (because minGramSize="3") and indexed
* At query time, this filter causes the token 'aaa' to be generated from 
the string "aaaa" (again, because minGramSize="3")

Therefore, the matching should indeed occur exactly as you are seeing it 
happen.

You may find the second example in the N-Gram Tokenizer section of the 
reference guide useful: 
https://lucene.apache.org/solr/guide/7_7/tokenizers.html#n-gram-tokenizer

Hope this helps,

Alex


On 25/07/2019 08:24, Akihiro Ito wrote:
> HI,
>
> I am using Solr 7.7.1 in SolrCloud mode.
>
> I’m getting a document I shouldn’t when searching with a TextField.
> It looks like autoGeneratePhaseQuery is not working as it should,
> but I have no idea what is causing it.
>
> The schema definition I use is as follows.
>
>   <fieldType name=“trigram_type” class=“solr.TextField”
> positionIncrementGap=“100” autoGeneratePhraseQueries=“true”>
>     <analyzer type=“index”>
>       <charFilter class=“solr.ICUNormalizer2CharFilterFactory” name=“nfkc”/>
>       <charFilter class=“solr.PatternReplaceCharFilterFactory” pattern=“$”
> replacement=“**“/>
>       <tokenizer class=“solr.NGramTokenizerFactory” maxGramSize=“3"
> minGramSize=“3” />
>       <filter class=“solr.PatternReplaceFilterFactory”
> pattern=“([^\s])\s[^\s]” replacement=“$1  ” replace=“all”/>
>       <filter class=“solr.PatternReplaceFilterFactory” pattern=“^\s.*$”
> replacement=“” replace=“all”/>
>       <filter class=“solr.LengthFilterFactory” min=“3” max=“3"/>
>       <filter class=“solr.LowerCaseFilterFactory”/>
>       <filter class=“solr.ICUTransformFilterFactory” id=“Hiragana-Katakana”/>
>     </analyzer>
>     <analyzer type=“query”>
>       <charFilter class=“solr.ICUNormalizer2CharFilterFactory” name=“nfkc”/>
>       <tokenizer class=“solr.NGramTokenizerFactory” maxGramSize=“3"
> minGramSize=“3” />
>       <filter class=“solr.LowerCaseFilterFactory”/>
>       
>       <filter class=“solr.ICUTransformFilterFactory” id=“Hiragana-Katakana”/>
>     </analyzer>
>   </fieldType>
>
>
> Following sample document is in Solr.
>
> docs: [
> {
>   syo_id: “1237”,
>   trigram: “aaabbbccc”,
>   _version_: 1639992506850476000,
>   timestamp: “2019-07-25T01:38:52.894Z”
> }
> ]
>
> If I execute the following query,it will hit the above document
>
> q=trigram:aaaa&fq=syo_id:1237&debugQuery=on
>
>
> Thanks,
> Akihiro.
>
>
>
>
>
> --
> Sent from: http://lucene.472066.n3.nabble.com/Solr-User-f472068.html