Поиск и выделение подстановочных знаков с помощью Solr 1.4

У меня есть довольно обычная установка SOLR 1.4, за исключением нескольких небольших изменений конфигурации и схемы.

<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>

Основной тип поля, который я использую для индексирования, следующий:

<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>

теперь, когда я выполняю поиск с помощью

"q=search+term&hl=on"

Я получаю выделение и хорошие точные оценки.

НО, для подстановочного знака, я предполагаю, что вам нужно использовать «q.alt»? Это правда? Если да, то мой запрос выглядит так:

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

Когда я использую вышеуказанный запрос, выделение не работает, и все оценки равны «1.0».

Что я делаю неправильно? это то, что я хочу, возможно, не обойдя некоторые из действительно крутых оптимизаций SOLR.

ваше здоровье!


person andy    schedule 10.03.2010    source источник
comment
Некоторая информация, которую я нашел об этом: old.nabble.com /Wildcard-on-q.alt-with-Dismax-td17722791.html mail-archive.com/[email protected]/msg21518.html, однако, похоже, что они были исправлены в 1.4. Я буду искать ...   -  person Mauricio Scheffer    schedule 11.03.2010
comment
- Круто, - восклицает Маурисио. Я нашел довольно много информации по этой теме, но обсуждения никогда не касаются того, какие параметры мне нужно использовать, или могу ли я все еще использовать выделение, оценку, проверку орфографии и т. Д., Хотя   -  person andy    schedule 11.03.2010


Ответы (2)


Насколько я знаю, вы не можете использовать подстановочные знаки с обработчиком Dismax, см. http://wiki.apache.org/solr/DisMaxRequestHandler#q.

Чтобы имитировать поиск по шаблонам, я использовал EdgeNGrams, следуя некоторым инструкциям здесь: http://www.lucidimagination.com/blog/2009/09/08/auto-suggest-from-popular-queries-using-edgengrams/. На самом деле я действительно только добавил тип поля edgytext в schema.xml и изменил тип поля того поля, которое хотел найти.

Надеюсь это поможет!

person jimmystormig    schedule 17.05.2010
comment
Рад, что смог помочь! Я сам очень расстроился :) - person jimmystormig; 19.05.2010

Или вы можете получить последнюю ночную сборку и использовать edismax (ExtendedDismaxQParser).

Он обрабатывает как конечные, так и ведущие подстановочные знаки.

person Jem    schedule 23.05.2010
comment
круто, спасибо, Джем, я проверю это. Между прочим, вы участвуете в форуме списка рассылки Solr? Было бы хорошо, если бы Solr мог сделать так, чтобы они стали официальным местом для вопросов и ответов ... эти списки рассылки действительно не интуитивно понятны - person andy; 24.05.2010