как найти документы, которые содержат только искомые слова в `solr`

Например, у меня есть коллекция solr, содержащая документы с полем "key_phrase".

Я знаю, что легко найти все документы, содержащие все искомые слова в поисковом запросе. (т.е. используя mm=100% в edismax)

Однако я спрашиваю, как вернуть документы, чья «key_phrase» содержит только искомые слова и ничего больше. Эта "key_phrase" также является полем с несколькими значениями.

Например: Поисковый запрос: "детское футбольное снаряжение". Запрос вернет следующий документ, поле "key_phrase" которого содержит: "детский футбол". . Также будет возвращен документ, содержащий два значения "key_phrase", например "детское снаряжение" и "любое другое слово", поскольку одно из них не содержит слов, которых нет в поисковом запросе.

С другой стороны, он не вернет документ, в котором есть «детская футбольная экипировка для мальчика», поскольку этот документ содержит «мальчик», которого нет в поисковом запросе. .


person Gloria Chen    schedule 29.09.2016    source источник
comment
Собственно какой у вас вопрос???   -  person Rafaf Tahsin    schedule 29.09.2016
comment
Было бы полезно узнать, что вы уже пробовали. Похоже, что поиск по И в правильно настроенном типе поля может быть тем, что вы ищете?   -  person TMBT    schedule 29.09.2016


Ответы (1)


Вы можете попробовать проиндексировать поле с помощью ShingleFilterFactory.

e.g.

<filter class="solr.ShingleFilterFactory" maxShingleSize="3" outputUnigrams="true"/>

вы можете обратиться сюда ShingleFilterFactory

<analyzer>
  <tokenizer class="solr.StandardTokenizerFactory"/>
  <filter class="solr.ShingleFilterFactory"/>
</analyzer>

Если у вас есть вход как

In: "To be, or what?"

Токенизатор для фильтрации: "To"(1), "be"(2), "or"(3), "what"(4)

Вышел: "To"(1), "To be"(1), "be"(2), "be or"(2), "or"(3), "or what"(3), "what"(4)

person Abhijit Bashetti    schedule 30.09.2016