Подстановочный поиск и выделение с 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.

удачи!

7
задан andy 10 March 2010 в 05:49
поделиться

2 ответа

Насколько я знаю, вы не можете использовать подстановочные знаки в обработчике disax, см. 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 и изменил тип поля того поля, которое хотел найти.

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

8
ответ дан 6 December 2019 в 19:35
поделиться

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

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

5
ответ дан 6 December 2019 в 19:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: