Как работает запрос функции termFreq в Apache Solr. - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь запросить индекс solr с помощью его API,

http://localhost:8983/solr/documents/select?defType=func&q=termfreq(contents,'hello)&wt=json

Я проиндексировал 3 документа и 2 документа / записи имеют термин "привет", но он возвращает вседокументы.

{
  "responseHeader":{
    "status":0,
    "QTime":0,
    "params":{
      "q":"termfreq(contents,'hello')",
      "defType":"func",
      "indent":"on",
      "wt":["json",
        "json"],
      "_":"1538568705504"}},
  "response":{"numFound":3,"start":0,"docs":[
      {*here I have docs*}
  ]
  }

Я ожидал документы, содержащие только слово hello и его вхождение в этом документе.

Прав ли я или не правильно понял эту функцию.

1 Ответ

0 голосов
/ 03 октября 2018

Вы не можете использовать такие функции в Solr.Чтобы получить только те документы, которые имеют термин hello, и получить счет в качестве результата, используйте:

q=content:hello _val_:"termfreq(contents,'hello')"

Первая часть вашего запроса ограничивает набор результатов документами, имеющими helloв поле content, в то время как вторая часть вызывает синтаксический анализатор запросов через поле magic _val_.Результат этой функции назначается в качестве балла для документа, эффективно возвращая как документы, которые совпадают, так и счет данного термина в этих документах.

Вы также можете использовать termfreq(contents, 'hello') непосредственно вваш список полей (fl=termfreq(contents,'hello'),score,foo), если вы не хотите назначать его в качестве оценки.

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