views:

1282

answers:

4

Hey guys,

I've got a pretty much vanilla install of SOLR 1.4 apart from a few small config and schema changes.

<requestHandler name="standard" class="solr.SearchHandler" default="true">
    <!-- default values for query parameters -->
    <lst name="defaults">
        <str name="defType">dismax</str>
        <str name="echoParams">explicit</str>
        <str name="qf">
            text
        </str>
        <str name="spellcheck.dictionary">default</str>
        <str name="spellcheck.onlyMorePopular">false</str>
        <str name="spellcheck.extendedResults">false</str>
        <str name="spellcheck.count">1</str>
    </lst>
</requestHandler>

The main field type I'm using for Indexing is this:

<fieldType name="textNoHTML" class="solr.TextField" positionIncrementGap="100">
        <analyzer type="index">
            <charFilter class="solr.HTMLStripCharFilterFactory" />
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <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"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
        </analyzer>
        <analyzer type="query">
            <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"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
        </analyzer>
    </fieldType>

now, when I perform a search using

"q=search+term&hl=on"

I get highlighting, and nice accurate scores.

BUT, for wildcard, I'm assuming you need to use "q.alt"? Is that true? If so my query looks like this:

"q.alt=search*&hl=on"

When I use the above query, highlighting doesn't work, and all the scores are "1.0".

What am I doing wrong? is what I want possible without bypassing some of the really cool SOLR optimizations.

cheers!

+2  A: 

From what I know you can't use wildcards with the dismax handler, see http://wiki.apache.org/solr/DisMaxRequestHandler#q.

To simulate wildcard searching I used EdgeNGrams following some of the instructions here: http://www.lucidimagination.com/blog/2009/09/08/auto-suggest-from-popular-queries-using-edgengrams/. Actually I really only added the edgytext fieldtype to schema.xml and changed the fieldtype of the field I wanted to search.

Hope this helps!

Jimmy
wow, cheers, finally!!
andy
Glad I could help! I was quite frustrated myself :)
Jimmy
+1  A: 

Or you can grab the latest nightly build and use edismax (ExtendedDismaxQParser).

It handles both trailing and leading wildcards.

Jem
andy
+1  A: 

I share your opinion on the mailing list, so yeah maybe SO can serve as a place for Q&A regarding Solr.

I use http://lucene.472066.n3.nabble.com/ to search the different mailing lists with Solr relevant content.

Jem
A: 

I was really interested in using dismax with wildcard queries. Could someone please tell me when the next stable version of SOLR(like 1.4.2 or something) will be coming out with this feature.

Thanks.

Imran Khan
Welcome to Stack Overflow! Please note that this is not a forum, it's a Q/A site. If you want to post a new question, use the Ask Question button in the top right instead of posting it as an answer to other questions.
Helen
Ok...Thanks for pointing it out Helen.
Imran Khan