Have you looked at "autoGeneratePhraseQueries"? That might help.

If that doesn't work, you can always do something like add an OR clause like
OR "original query"
and optionally boost it high. But I'd start with the autoGenerate bits.

Best,
Erick


On Fri, Sep 27, 2013 at 7:37 AM, elisabeth benoit
<elisaelisael...@gmail.com> wrote:
> Thanks for your answer.
>
> So I guess if someone wants to search on two fields, on with phrase query
> and one with "normal" query (splitted in words), one has to find a way to
> send query twice: one with quote and one without...
>
> Best regards,
> Elisabeth
>
>
> 2013/9/27 Erick Erickson <erickerick...@gmail.com>
>
>> This is a classic issue where there's confusion between
>> the query parser and field analysis.
>>
>> Early in the process the query parser has to take the input
>> and break it up. that's how, for instance, a query like
>> text:term1 term2
>> gets parsed as
>> text:term1 defaultfield:term2
>> This happens long before the terms get to the analysis chain
>> for the field.
>>
>> So your only options are to either quote the string or
>> escape the spaces.
>>
>> Best,
>> Erick
>>
>> On Wed, Sep 25, 2013 at 9:24 AM, elisabeth benoit
>> <elisaelisael...@gmail.com> wrote:
>> > Hello,
>> >
>> > I am using solr 4.2.1 and I have a autocomplete_edge type defined in
>> > schema.xml
>> >
>> >
>> > <fieldType name="autocomplete_edge" class="solr.TextField">
>> >   <analyzer type="index">
>> >     <charFilter class="solr.MappingCharFilterFactory"
>> > mapping="mapping-ISOLatin1Accent.txt"/>
>> >     <tokenizer class="solr.KeywordTokenizerFactory"/>
>> >     <filter class="solr.LowerCaseFilterFactory"/>
>> >     <filter class="solr.PatternReplaceFilterFactory" pattern="\s+"
>> > replacement=" " replace="all"/>
>> >     <filter class="solr.EdgeNGramFilterFactory" maxGramSize="30"
>> > minGramSize="1"/>
>> >    </analyzer>
>> >   <analyzer type="query">
>> >     <charFilter class="solr.MappingCharFilterFactory"
>> > mapping="mapping-ISOLatin1Accent.txt"/>
>> >     <tokenizer class="solr.KeywordTokenizerFactory"/>
>> >     <filter class="solr.LowerCaseFilterFactory"/>
>> >     <filter class="solr.PatternReplaceFilterFactory" pattern="\s+"
>> > replacement=" " replace="all"/>
>> >      <filter class="solr.PatternReplaceFilterFactory"
>> > pattern="^(.{30})(.*)?" replacement="$1" replace="all"/>
>> >   </analyzer>
>> > </fieldType>
>> >
>> > When I have a request with more then one word, for instance "rue de la",
>> my
>> > request doesn't match with my autocomplete_edge field unless I use quotes
>> > around the query. In other words q=rue de la doesnt work and q="rue de
>> la"
>> > works.
>> >
>> > I've check the request with debugQuery=on, and I can see in first case,
>> the
>> > query is splitted into words, and I don't understand why since my field
>> > type uses KeywordTokenizerFactory.
>> >
>> > Does anyone have a clue on how I can request my field without using
>> quotes?
>> >
>> > Thanks,
>> > Elisabeth
>>

Reply via email to