Solr 8.1.0 - Получить частоту терминов для частичных слов - PullRequest
1 голос
/ 03 июня 2019

У меня есть следующие документы:

doc1
    description: "A doggo is a small dog."
doc2
    description: "My dog is small.
doc3
    description: "My cat is lazy."

Я ищу в своих документах следующий запрос:

description:*dog* OR small

, который возвращает документы: doc1 и doc2

Теперь я хочу получить общее количество терминов частоты каждого слова в запросе.Для этого я пытаюсь использовать функцию termfreq().

termfreq(description, *dog*)
termfreq(description, small)

Результат будет выглядеть так:

doc1
    description: "A doggo is a small dog."
    termfreq(description,*dog*): 0
    termfreq(description, small): 1
doc2
    description: "My dog is small.
    termfreq(description, *dog*): 0
    termfreq(description, small): 1

Или результат должен выглядеть так:

doc1
    description: "A doggo is a small dog."
    termfreq(description, *dog*): 2
    termfreq(description, small): 1
doc2
    description: "My dog is small.
    termfreq(description, *dog*): 1
    termfreq(description, small): 1

Мой вопрос: можно ли использовать подстановочный знак в функции termfreq?

  • Если yes: Как?
  • Если no: Есть лиспособ получить частоту терминов запроса с частичными словами?

РЕДАКТИРОВАТЬ:

managed-схема

<fieldType name="descriptionNGram" class="solr.TextField" omitNorms="false">
    <analyzer>
      <tokenizer class="solr.StandardTokenizerFactory" />
      <filter class="solr.LowerCaseFilterFactory"/>
      <filter class="solr.NGramFilterFactory" minGramSize="2" maxGramSize="30"/>
    </analyzer>
  </fieldType>

<field name="description" stored="true" type="descriptionNGram" multiValued="false" indexed="true"/>

1 Ответ

0 голосов
/ 03 июня 2019

Если вы можете жить без подстановочного знака префикса, вы можете использовать TermsComponent с terms.lower, установленным в токен, чтобы начать итерацию с.

Если вам нужен подстановочный знак префикса, вам придется вместо этого индексировать NGrams, чтобы вы получили один токен на комбинацию букв в ваших словах. Так что для догго вы получите токены с do, og, gg, go и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...