termfreq для фразы - PullRequest
       3

termfreq для фразы

2 голосов
/ 27 января 2012

Я использую функцию SOLR 4.x termfreq в следующем примере, чтобы найти «авто нулевые усилители» в поле СОДЕРЖАНИЕ.

http://localhost:8080/solr/select/?fl=contents,documentPageId,termfreq%28contents,%27autozero%20amplifiers%27%29&defType=func&q=termfreq%28contents,%27autozero%20amplifiers%27%29&fq=documentId%3A49667

Я получаю нулевую частоту для следующего абзаца, который содержит фразу "усилители с нулевым током".

Что мне нужно сделать или к solrconfig.xml, или к schema.xml, чтобы использовать termfreq для фразы, а не для одного слова «усилитель»?

Ответы [ 2 ]

2 голосов
/ 27 января 2012

Если вы не позволите Lucene рассматривать «усилители с автоматическим обнулением» как один термин, вы не можете использовать векторы терминов, чтобы получить то, что вы ищете. Вы можете использовать KeywordTokenizerFactory для индексации, которая на самом деле не маркирует слова, а сохраняет весь поток текста как один токен. Но если, например, интересующее вас поле содержит следующий текст,

 "The quick brown fox jumps over the lazy dog"

как вы определяете границы вашего термина?

 The quick
 The quick brown
 quick brown
 quick brown fox jumps
 over the lazy dog
 .....

комбинация растет экспоненциально для отдельного поля значения. Поскольку я отвечал на некоторые из ваших вопросов, связанных с term vectors, приведшими к этому, я предполагаю, что вы пытаетесь согнуть Solr/Lucene, чтобы посчитать слово / набор слов в большом документе. Вы можете рассмотреть возможность интеграции Solr с Hadoop, и пусть Hadoop сделает все за вас. Черт! каждый пример Hadoop говорит о количестве слов и количестве строк. Solr + Hadoop = Big Data Love или, возможно, вы можете сделать это на своем собственном уровне приложения.

У меня мало информации об объеме данных вашего приложения, целях требований и т. Д., Так что в лучшем случае это предложение.

0 голосов
/ 22 марта 2018

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

  1. termfreq () для обоих слов по отдельности и выполнить sum (), чтобы подсчитать его.

  2. Кроме того, вы можете использовать if () для проверки ваших значений.

Надеюсь, это звучит хорошо для вашего требования.

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