Hi Briggs. Thanks for taking the time. I have the query nearly working now, 
currently this is how it looks when it matches on the title "Super Technocrane 
30" and others with similar names:

INFO: [] webapp=/solr path=/select/ 
params={qf=title^40.0&hl.fl=title&wt=json&rows=10&fl=*,score&start=0&q=(title:*super*+AND+*technocran*)+OR+(title:*super*+AND+*technocran)&qt=standard&fq=type:product+AND+language:sv}
 hits=3 status=0 QTime=1 

Adding another letter stops it matching:

INFO: [] webapp=/solr path=/select/ 
params={qf=title^40.0&hl.fl=title&wt=json&rows=10&fl=*,score&start=0&q=(title:*super*+AND+*technocrane*)+OR+(title:*super*+AND+*technocrane)&qt=standard&fq=type:product+AND+language:sv}
 hits=0 status=0 QTime=0 

The field type definitions are as follows:

<field name="title" type="text" indexed="true" stored="true" termVectors="true" 
omitNorms="true"/>

    <fieldType name="text" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
        <charFilter class="solr.MappingCharFilterFactory" 
mapping="mapping-ISOLatin1Accent.txt"/>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <!-- in this example, we will only use synonyms at query time
        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" 
ignoreCase="true" expand="false"/>
        -->
        <!-- Case insensitive stop word removal.
          add enablePositionIncrements=true in both the index and query
          analyzers to leave a 'gap' for more accurate phrase queries.
        -->
        <filter class="solr.StopFilterFactory"
                ignoreCase="true"
                words="stopwords.txt"
                enablePositionIncrements="true"
                />
        <filter class="solr.WordDelimiterFilterFactory"
                generateWordParts="1"
                generateNumberParts="1"
                catenateWords="1"
                catenateNumbers="1"
                catenateAll="0"
                splitOnCaseChange="1"
                preserveOriginal="1"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.SnowballPorterFilterFactory" language="English" 
protected="protwords.txt"/>
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <charFilter class="solr.MappingCharFilterFactory" 
mapping="mapping-ISOLatin1Accent.txt"/>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" 
ignoreCase="true" expand="true"/>
        <filter class="solr.StopFilterFactory"
                ignoreCase="true"
                words="stopwords.txt"
                enablePositionIncrements="true"
                />
        <filter class="solr.WordDelimiterFilterFactory"
                generateWordParts="1"
                generateNumberParts="1"
                catenateWords="0"
                catenateNumbers="0"
                catenateAll="0"
                splitOnCaseChange="1"
                preserveOriginal="1"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.SnowballPorterFilterFactory" language="English" 
protected="protwords.txt"/>
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
      </analyzer>
    </fieldType>


There is also a type definition that is called text_ws, should I use that 
instead and change text to text_ws in the field definition for title?

    <!-- A text field that only splits on whitespace for exact matching of 
words -->
    <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
      <analyzer>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
      </analyzer>
    </fieldType>




Mvh

Christopher Cato
Teknikchef
-----------------------------------
MiniMedia
Phone: +46761927603
www.minimedia.se

7 jul 2011 kl. 23.16 skrev Briggs Thompson:

> Hello Christopher,
> 
> Can you provide the exact query sent to Solr for the one word query and also
> the two word query? The field type definition for your title field would be
> useful too.
> 
> From what I understand, Solr should be able to handle your use case. I am
> guessing it is a problem with how the field is defined assuming the query is
> correct.
> 
> Briggs Thompson
> 
> On Thu, Jul 7, 2011 at 12:22 PM, Christopher Cato <
> christopher.c...@minimedia.se> wrote:
> 
>> Hi, I'm running Solr 3.2 with edismax under Tomcat 6 via Drupal.
>> 
>> I'm having some problems writing a query that matches a specific field on
>> several words. I have implemented an AJAX search that basically takes
>> whatever is in a form field and attempts to match documents. I'm not having
>> much luck though. First word always matches correctly but as soon as I enter
>> the second word I'm loosing matches, the third word doesn't give any matches
>> at all.
>> 
>> The title field that I'm searching contains a product name that may or may
>> not have several words.
>> 
>> The requirement is that the search should be progressive i.e. as the user
>> inputs words I should always return results that contain all of the words
>> entered. I also have to correct bad input like an erraneous space in the
>> product name ex. "product name" instead of "productname".
>> 
>> I'm wondering if there isn't an easier way to query Solr? Ideally I'd want
>> to say "give me all docs that have the following text in it's titles" Is
>> that possible?
>> 
>> 
>> I'd really appreciate any help!
>> 
>> 
>> Regards,
>> Christopher Cato

Reply via email to