Solr: где хранить дополнительную информацию? - PullRequest
0 голосов
/ 29 июня 2011

Я хочу предоставить дополнительную информацию для каждого проиндексированного документа во время индексации.
И получить доступ к этой информации в том же анализаторе во время запроса, чтобы сравнить ее.
Итак.Теоретически было бы здорово записать это значение в какое-то поле, представленное в этом документе, и во время запроса также выполнить поиск в этом поле.

fe У меня есть животные db.Я хочу найти все документы с 3 словами «собака» внутри.(просто пример).Я могу настроить для своего поля «животных» свой пользовательский BaseTokenFilterFactory, который будет производить мой пользовательский TokenFilter, который будет просто считать все слова «собака» и где-то хранить это число.Так.Где я могу сохранить это значение для доступа к нему во время поиска?

1 Ответ

1 голос
/ 29 июня 2011

Ваш пример звучит как нечто, что будет лучше подходить для обработки с помощью пользовательского сходства или функции запроса в Solr, а не как пользовательский анализатор.

Например, если вы используете Solr 4.0, вы можете использовать функцию termfreq (поле, термин) для заказа по количеству раз, когда собака появляется.или вы можете использовать его в качестве фильтра следующим образом:

fq={!frange l=3 u=100000}termfreq(animals,"dog")

Это позволит отфильтровать все документы, в поле животных которых не содержится как минимум 3 вхождения слова «собака».Преимущество использования этого метода заключается в том, что вы не влияете на оценку документов, а только фильтруете их.

Возможность фильтрации по функциям существует начиная с Solr 1.4, так что даже если вы используете более раннюю версию Solr (> 1.4) Вы можете легко написать запрос функции "termfreq"

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