SOLR, не ищущий на определенных полях

Неважно, что Вы делаете, это может 'декомпилироваться'. Heck, можно просто демонтировать его. Или посмотрите на дамп памяти для нахождения констант. Вы видите, компьютер должен знать их, таким образом, Ваш код должен будет также.

, Что сделать об этом?

Попытка не поставить ключ как hardcoded константу в Вашем коде: Сохраните его как установку в расчете на пользователя. Сделайте пользователя ответственным за заботу о том ключе.

6
задан Core Xii 30 November 2012 в 00:52
поделиться

3 ответа

Вы упомянули, что в вашем поле поиска по умолчанию установлено значение PageName, я бы не ожидал, что поиск по запросу «контент» что-нибудь даст.

Вы, вероятно, хотели указать «PageContent: content» в поле поиска, чтобы найти данные в этом поле. Если вы хотите выполнить поиск по нескольким полям, вы можете проверить это http://wiki.apache.org/solr/DisMaxRequestHandler . Консоль администратора solr не так уж и хороша для того, чтобы поиграть со всеми параметрами поиска DisMax, вам нужно просто манипулировать URL-адресом для этого.

Тем не менее, я согласен с предыдущим плакатом, если ваши настройки анализа не соответствуют Если вы не настроите должным образом для работы с HTML, вы можете получить всевозможные неожиданные результаты поиска. Удалите HTML-код и проиндексируйте только текст.

<requestHandler name="standard" class="solr.DisMaxRequestHandler">

     <lst name="defaults">
            <str name="echoParams">all</str>
            <str name="hl">true</str>

            <str name="fl">*</str>
            <str name="qf">PageName PageContent</str>
     </lst>

 </requestHandler>
7
ответ дан 10 December 2019 в 02:49
поделиться

Вы проверяете, что ваши данные были зафиксированы, прежде чем пытаться искать по ним, верно?

Кроме того, если вы хотите сохранить необработанный HTML, вероятно, лучше всего удалить HTML . Вы можете сделать это в своем приложении или используя Solr's solr.HTMLStripWhitespaceTokenizerFactory, например:

<tokenizer class="solr.HTMLStripWhitespaceTokenizerFactory"/> 

Который вы объявляете в определении типа поля для «текста». Возможно, вы захотите создать новый тип поля только для своего html, возможно, что-то вроде text_html, и вы можете использовать его так:

<fieldtype name="text_html" class="solr.TextField" positionIncrementGap="100"> 
      <analyzer type="index"> 
          <tokenizer class="solr.HTMLStripWhitespaceTokenizerFactory"/> 
          <filter class="solr.StopFilterFactory" ignoreCase="true"/> 
          <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/> 
          <filter class="solr.LowerCaseFilterFactory"/> 
          <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/> 
          <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
      </analyzer> 
      <analyzer type="query"> 
          <tokenizer class="solr.HTMLStripWhitespaceTokenizerFactory"/> 
          <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
          <filter class="solr.StopFilterFactory" ignoreCase="true"/> 
          <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/> 
          <filter class="solr.LowerCaseFilterFactory"/> 
          <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/> 
          <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
      </analyzer> 
    </fieldtype> 

Я не уверен, что вы имеете в виду:

Однако, когда я установил узел на PageContent, это работает. Но если я установлю это в любое другое поле, поиск не выполняется в PageContent.

Не могли бы вы уточнить?

1
ответ дан 10 December 2019 в 02:49
поделиться

fl - это список полей, возвращаемых запросом. qf - это список, к которому вы хотели обратиться, и он не поддерживает подстановочные знаки ..

Единственный способ поиск по всем полям без их включения - это иметь поле copyField, которое улавливает все значения (не сохраняются только в индексе), а затем имитировать поиск по всем полям, выполняя поиск по нему

1
ответ дан 10 December 2019 в 02:49
поделиться
Другие вопросы по тегам:

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