Использование dismax для поиска терминов с несколькими словами - PullRequest
0 голосов
/ 13 февраля 2012

Моя схема solr следующая (только важные части):

<fieldType name="bagofwords_expertfinding" class="solr.TextField"    positionIncrementGap="100">
  <analyzer type="index">
    <!-- remove letters repeated more than two times -->
    <charFilter class="solr.HTMLStripCharFilterFactory"/>
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory"
            ignoreCase="true"
            words="stopwords_en.txt"
            enablePositionIncrements="true"
            />
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.EnglishPossessiveFilterFactory"/>
    <filter class="solr.PatternReplaceFilterFactory" pattern="^[0-9-/_,\.]+$" replacement="" replace="all"/>
    <filter class="solr.PatternReplaceFilterFactory" pattern="^.*(([aA-zZ])\\2)\\2+.*$" replacement=""/>
    <filter class="solr.PorterStemFilterFactory"/>
    <filter class="solr.LengthFilterFactory" min="3" max="100"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory"
            ignoreCase="true"
            words="stopwords_en.txt"
            enablePositionIncrements="true"
            />
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.EnglishPossessiveFilterFactory"/>
    <filter class="solr.PatternReplaceFilterFactory" pattern="^[0-9-/_,\.]+$" replacement="" replace="all"/> 
    <filter class="solr.PorterStemFilterFactory"/>
    <filter class="solr.LengthFilterFactory" min="3" max="100"/>
  </analyzer>
</fieldType>
<fieldType name="namedentities_expertfinding" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <!-- remove letters repeated more than two times -->
    <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="\s," replacement=","/>
    <charFilter class="solr.PatternReplaceCharFilterFactory" pattern=",\s" replacement=","/>
    <tokenizer class="solr.PatternTokenizerFactory" pattern="," />
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.StopFilterFactory"
            ignoreCase="true"
            words="stopwords_en.txt"
            enablePositionIncrements="true"
            />
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.EnglishPossessiveFilterFactory"/>
    <filter class="solr.PatternReplaceFilterFactory" pattern="^[0-9-/_,\.]+$" replacement="" replace="all"/> 
    <filter class="solr.LengthFilterFactory" min="3" max="100"/>
  </analyzer>
</fieldType>

В именахя проиндексировал многословные термины, такие как: «Диего Альберто Милито», «Диего Армандо Марадона».Я пытаюсь искать в обоих полях, увеличивая их по-разному с помощью запроса dismax.

Но пытаюсь выполнить этот запрос: localhost: 8080 / solr / select /? Q = "diego armando maradona" & defType = dismax & qf = namedentities^ 100 bagofwords ^ 1 & fl = *, score & debugQuery = true & mm = 0

solr не находит ничего.Может быть, я не понимаю правильное использование "символа.

Я не понимаю также, учитывая это из Solr Wiki:

" В Solr 1.4 и ранее, вы должны в основном установить mm =0, если вы хотите получить эквивалент q.op = OR, и mm = 100%, если вы хотите получить эквивалент q.op = AND.В 3.x и транке значение по умолчанию mm определяется параметром q.op (q.op = AND => mm = 100%; q.op = OR => mm = 0%).Помните, что оператор по умолчанию зависит от вашей записи schema.xml.В более старых версиях Solr значение по умолчанию составляет 100% (все пункты должны совпадать) "

, и учитывая, что в моей схеме defaultOperator - ИЛИ, почему без установки mm = 0 я получаю значение mm по умолчанию, равное 100.

Заранее спасибо!

1 Ответ

0 голосов
/ 25 марта 2014

Наличие кавычек вокруг строки запроса выше вызывает запрос фразы. Это означает, что рассматриваются только точные совпадения. Удалите их, заменив паренами, и поэкспериментируйте с параметрами pf и pf2 и pf3, чтобы увеличить более подходящие фразы.

...