Thanks for your reply. Here is some other details:

1. Keyphrase field definition:
   <field name="keyphrase" type="text_keyword" indexed="true" stored="false"
multiValued="true"/>

2. I'm using solr 1.4.

3. My dismax definition is the original configuration after install solr:
  <requestHandler name="dismax" class="solr.SearchHandler" >
    <lst name="defaults">
     <str name="defType">dismax</str>
     <str name="echoParams">explicit</str>
     <float name="tie">0.01</float>
     <str name="qf">
        text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4
     </str>
     <str name="pf">
        text^0.2 features^1.1 name^1.5 manu^1.4 manu_exact^1.9
     </str>
     <str name="bf">
        popularity^0.5 recip(price,1,1000,1000)^0.3
     </str>
     <str name="fl">
        id,name,price,score
     </str>
     <str name="mm">
        2&lt;-1 5&lt;-2 6&lt;90%
     </str>
     <int name="ps">100</int>
     <str name="q.alt">*:*</str>
     <!-- example highlighter config, enable per-query with hl=true -->
     <str name="hl.fl">text features name</str>
     <!-- for this field, we want no fragmenting, just highlighting -->
     <str name="f.name.hl.fragsize">0</str>
     <!-- instructs Solr to return the field itself if no query terms are
          found -->
     <str name="f.name.hl.alternateField">name</str>
     <str name="f.text.hl.fragmenter">regex</str> <!-- defined below -->
    </lst>
  </requestHandler>

4. Here is the result returned back of the original query: smart mobile.

<?xml version="1.0" encoding="UTF-8"?>

<response>

<lst name="responseHeader">
 <int name="status">0</int>

 <int name="QTime">1</int>
 <lst name="params">

  <str name="debugQuery">on</str>
  <str name="fl">uuid,name,fap</str>

  <str name="indent">true</str>
  <str name="q">smart mobile</str>

  <str name="qf">keyphrase</str>
  <str name="defType">dismax</str>

 </lst>
</lst>
<result name="response" numFound="0" start="0"/>

<lst name="debug">

 <str name="rawquerystring">smart mobile</str>

 <str name="querystring">smart mobile</str>
 <str name="parsedquery">+((DisjunctionMaxQuery((keyphrase:smart))
DisjunctionMaxQuery((keyphrase:mobile)))~2) ()</str>

 <str name="parsedquery_toString">+(((keyphrase:smart)
(keyphrase:mobile))~2) ()</str>

 <lst name="explain"/>
 <str name="QParser">DisMaxQParser</str>

 <null name="altquerystring"/>
 <null name="boostfuncs"/>

 <lst name="timing">
  <double name="time">1.0</double>

  <lst name="prepare">
        <double name="time">1.0</double>

        <lst name="org.apache.solr.handler.component.QueryComponent">
         <double name="time">1.0</double>

        </lst>
        <lst name="org.apache.solr.handler.component.FacetComponent">

         <double name="time">0.0</double>
        </lst>

        <lst name="org.apache.solr.handler.component.MoreLikeThisComponent">
         <double name="time">0.0</double>

        </lst>
        <lst name="org.apache.solr.handler.component.HighlightComponent">

         <double name="time">0.0</double>
        </lst>

        <lst name="org.apache.solr.handler.component.StatsComponent">
         <double name="time">0.0</double>

        </lst>
        <lst name="org.apache.solr.handler.component.DebugComponent">

         <double name="time">0.0</double>

        </lst>

  </lst>
  <lst name="process">
        <double name="time">0.0</double>

        <lst name="org.apache.solr.handler.component.QueryComponent">
         <double name="time">0.0</double>

        </lst>
        <lst name="org.apache.solr.handler.component.FacetComponent">

         <double name="time">0.0</double>
        </lst>

        <lst name="org.apache.solr.handler.component.MoreLikeThisComponent">
         <double name="time">0.0</double>

        </lst>
        <lst name="org.apache.solr.handler.component.HighlightComponent">

         <double name="time">0.0</double>

        </lst>

        <lst name="org.apache.solr.handler.component.StatsComponent">
         <double name="time">0.0</double>

        </lst>
        <lst name="org.apache.solr.handler.component.DebugComponent">

         <double name="time">0.0</double>
        </lst>

  </lst>

 </lst>
</lst>
</response>

5. Here is parsed query with "smart mobile" (with quotes) which returns the
result:

<lst name="debug">
 <str name="rawquerystring">"smart mobile"</str>

 <str name="querystring">"smart mobile"</str>


 <str name="parsedquery">+DisjunctionMaxQuery((keyphrase:smart mobile)) ()</str>

 <str name="parsedquery_toString">+(keyphrase:smart mobile) ()</str>

 <lst name="explain">
  <str name="D297A64B-D4BA-4445-B63E-726E5A4F758D">

4.503682 = (MATCH) sum of:
  4.503682 = (MATCH) fieldWeight(keyphrase:smart mobile in 13092), product of:
    1.0 = tf(termFreq(keyphrase:smart mobile)=1)
    10.29413 = idf(docFreq=1, maxDocs=21748)
    0.4375 = fieldNorm(field=keyphrase, doc=13092)

</str>
 </lst>

6. Here, I tried to use automatic phrase query (pf parameter): doesn't
return any results.
http://localhost:8081/solr/select?q=smart%20mobile&qf=keyphrase&pf=keyphrase&debugQuery=on&defType=dismax

 <str name="rawquerystring">smart mobile</str>

 <str name="querystring">smart mobile</str>
 <str name="parsedquery">+((DisjunctionMaxQuery((keyphrase:smart))
DisjunctionMaxQuery((keyphrase:mobile)))~2)
DisjunctionMaxQuery((keyphrase:smart mobile))</str>

 <str name="parsedquery_toString">+(((keyphrase:smart)
(keyphrase:mobile))~2) (keyphrase:smart mobile)</str>

 <lst name="explain"/>

 <str name="QParser">DisMaxQParser</str>

 <null name="altquerystring"/>
 <null name="boostfuncs"/>

Thanks
Chamnap

On Wed, Nov 17, 2010 at 8:10 PM, Erick Erickson <erickerick...@gmail.com>wrote:

> Try qt=dismax or deftype=dismax, I was also getting 0 results with
> defType on 1.4.1. I'll see what's up with that...
>
> But if that doesn't work...
>
> May we see your dismax definition too? You shouldn't need the
> quotes, so something's wrong somewhere....
>
> What version of Solr are you using?
>
> Also, please post the results of running your original query
> with &debugQuery=on
>
> Best
> Erick
>
> On Tue, Nov 16, 2010 at 10:28 PM, Chamnap Chhorn <chamnapchh...@gmail.com
> >wrote:
>
> > I have one question related to single word token with dismax query. In
> > order
> > to be found I need to add the quote around the search query all the time.
> > This is quite hard for me to do since it is part of full text search.
> >
> > Here is my solr query and field type definition (Solr 1.4):
> >    <fieldType name="text_keyword" class="solr.TextField"
> > positionIncrementGap="100">
> >      <analyzer>
> >        <tokenizer class="solr.KeywordTokenizerFactory"/>
> >        <filter class="solr.LowerCaseFilterFactory" />
> >        <filter class="solr.TrimFilterFactory" />
> >        <filter class="solr.StopFilterFactory" ignoreCase="true"
> > words="stopwords.txt" enablePositionIncrements="true"/>
> >        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"
> > ignoreCase="true" expand="false" />
> >        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
> >      </analyzer>
> >    </fieldType>
> >
> >    <field name="keyphrase" type="text_keyword" indexed="true"
> > stored="false" multiValued="true"/>
> >
> > With this query
> q=smart%20mobile&qf=keyphrase&debugQuery=on&defType=dismax,
> > solr returns nothing. However, with quote on the search query q="smart
> > mobile"&qf=keyphrase&debugQuery=on&defType=dismax, the result is found.
> >
> > Is it a must to use quote for a single word token field?
> >
> > --
> > Chhorn Chamnap
> > http://chamnapchhorn.blogspot.com/
> >
>



-- 
Chhorn Chamnap
http://chamnapchhorn.blogspot.com/

Reply via email to