SOLR - Group.limit арқылы топтау нәтижелерін дұрыс қайтару numFound

Топтау нәтижесі бойынша іздеу жасап, топтық шектеуді орындаған кезде, мен сол numFound шегімді пайдаланбаған кезде мен бірдей.

SOLR алдымен іздеуді орындайды және numFound есептеп, нәтижелерді шектейді.

Мен прагинияны және басқа заттарды пайдалана алмаймын. Кездейсоқтық бар ма, әлде бір нәрсе жіберіп алдым?


Мысал:

======================================
| id |  publisher | book_title      |
======================================
| 1  | A1         | Title Book      |
| 2  | A1         | Book title 123  |
| 3  | A1         | My book         |
| 4  | B2         | Hi book title   |
| 5  | B2         | Another Book    |

Егер сұрауды орындасам:

q=book_title:book
&group=true 
&group.field=publisher 
&group.limit=1
&group.main=true 

Мен numFound 5 аламын 2 нәтижелерінде ғана аламын.

"response": {
    "numFound": 5,
    "docs": [
        {
            "book_title": "My book",
            "publisher":  "A1"
        },
        {
            "book_title": "Another Book",
            "publisher":  "B2"
        }
    ]
}
6

10 жауаптар

Group.angroups true параметріне орнатыңыз. Бұл нәтиже береді

"grouped": {
"bl_version_id": {
  "matches": 53,
  "ngroups": 18,
  "groups": [
    {
...
4
қосылды
бұл ақпаратты тастайтын group.main = true қолдануға болмайды
қосылды автор rabudde, көзі
@rabudde жақсы дейді, онсыз алынған нәтиже топтарды қолмен сұрыптау үшін жеткілікті ақпарат болады.
қосылды автор SRB, көзі

Group.angroups true параметріне орнатыңыз. Бұл нәтиже береді

"grouped": {
"bl_version_id": {
  "matches": 53,
  "ngroups": 18,
  "groups": [
    {
...
4
қосылды
бұл ақпаратты тастайтын group.main = true қолдануға болмайды
қосылды автор rabudde, көзі
@rabudde жақсы дейді, онсыз алынған нәтиже топтарды қолмен сұрыптау үшін жеткілікті ақпарат болады.
қосылды автор SRB, көзі

group.limit нақты шектеу емес, қайтару үшін NumRows ғана.

Solr-мен менің проблемам үшін оңай шешім қабылданбайды.

You may find answer here Solr User Group

1
қосылды

group.limit нақты шектеу емес, қайтару үшін NumRows ғана.

Solr-мен менің проблемам үшін оңай шешім қабылданбайды.

You may find answer here Solr User Group

1
қосылды

Менде бірдей проблема болғандықтан, түбірлік мәселені шешу жолын таба алмадым, бірақ менің шешімімді уақытша жою ретінде бөлісемін.

Мен не істедім

  1. Өріс бойынша топтасқан топ.
  2. Бірегей қырлар санын санау. Бұл бірегей құжаттарының нөміріне сәйкес келеді (сіздің жағдайда 2)

Сұрауыңызға мына беттерді көрсету параметрлерін қосыңыз:

&facet=true
&facet.limit=-1
&facet.field=publisher

Ескерту:

  • Бұл аздап қымбат, бірақ бұл менің жұмысымның жалғыз жолы (әлі күнге дейін).
  • Бұл баспагер көп мәнді емес
1
қосылды

Менде бірдей проблема болғандықтан, түбірлік мәселені шешу жолын таба алмадым, бірақ менің шешімімді уақытша жою ретінде бөлісемін.

Мен не істедім

  1. Өріс бойынша топтасқан топ.
  2. Бірегей қырлар санын санау. Бұл бірегей құжаттарының нөміріне сәйкес келеді (сіздің жағдайда 2)

Сұрауыңызға мына беттерді көрсету параметрлерін қосыңыз:

&facet=true
&facet.limit=-1
&facet.field=publisher

Ескерту:

  • Бұл аздап қымбат, бірақ бұл менің жұмысымның жалғыз жолы (әлі күнге дейін).
  • Бұл баспагер көп мәнді емес
1
қосылды

numFound refers to the total number of documents found by solr after executing your query, which is also something that you're gonna need to do pagination based on that query.

Солрдағы пагинация сізді әдеттегі RDBMS-лермен басқаратын сияқты, сізге бастау және жолдар параметрлеріне, мысалы, келесі сұранысты орындауға әкеледі: 20 нөмірлі құжатнан бастап 10 құжат алу:

?q=you_key_word&start=20&rows=10

Бұл сұраныс сіз үшін мақсатты беттің қажетті мазмұнын алуы мүмкін «бұл сізде 10 докум/беттің бар болған жағдайда 3-бет нөмірін жасайды» және, әрине, білетін құжаттардың жалпы санын алу үшін басқа сұрауды орындаудың орнына беттердің саны, сіз үшін «numFound» мәнімен ұсынылған бұл ақпарат автоматты түрде пайда болады.

Бұл көмектеседі деп үміттенемін

1
қосылды
Бірақ солрда табылған құн дұрыс емес, өйткені менде әр топта шектеу бар. Мен барлық нәтижелерді көрсетпеймін, бірақ тек шектеулі. Мен күткеннен гөрі жоғарырақ numFound алдым.
қосылды автор tasmaniski, көзі
Мен жаңартылған мысал. Рахмет.
қосылды автор tasmaniski, көзі
Кез келген жағдайда, numFound құжаттардың TOTAL санына сілтеме жасайды, сіз оны есте ұстауыңыз керек.
қосылды автор Ma'moon Al-Akash, көзі

numFound refers to the total number of documents found by solr after executing your query, which is also something that you're gonna need to do pagination based on that query.

Солрдағы пагинация сізді әдеттегі RDBMS-лермен басқаратын сияқты, сізге бастау және жолдар параметрлеріне, мысалы, келесі сұранысты орындауға әкеледі: 20 нөмірлі құжатнан бастап 10 құжат алу:

?q=you_key_word&start=20&rows=10

Бұл сұраныс сіз үшін мақсатты беттің қажетті мазмұнын алуы мүмкін «бұл сізде 10 докум/беттің бар болған жағдайда 3-бет нөмірін жасайды» және, әрине, білетін құжаттардың жалпы санын алу үшін басқа сұрауды орындаудың орнына беттердің саны, сіз үшін «numFound» мәнімен ұсынылған бұл ақпарат автоматты түрде пайда болады.

Бұл көмектеседі деп үміттенемін

1
қосылды
Бірақ солрда табылған құн дұрыс емес, өйткені менде әр топта шектеу бар. Мен барлық нәтижелерді көрсетпеймін, бірақ тек шектеулі. Мен күткеннен гөрі жоғарырақ numFound алдым.
қосылды автор tasmaniski, көзі
Мен жаңартылған мысал. Рахмет.
қосылды автор tasmaniski, көзі
Кез келген жағдайда, numFound құжаттардың TOTAL санына сілтеме жасайды, сіз оны есте ұстауыңыз керек.
қосылды автор Ma'moon Al-Akash, көзі

numFound жалпы саны көрсетілмейді. ағымдағы сұранымға сәйкес келетін құжаттың мағынасы бар, мұнда 5 жағдайда group.limit = 1 кодын бергеніңіз дұрыс. Бұл топта көптеген құжаттар болса да, топқа 1 құжат. Сұрауыңызда group.limit = -1 пайдалануды ұсынамын, ол нәтижеде барлық 5 құжатты қайтарады.

Қосымша ақпарат алу үшін төмендегі мәліметтерді қараңыз.

Өрістерді жинау және ең көп топты қосу

http://wiki.apache.org/solr/FieldCollapsing

1
қосылды

numFound жалпы саны көрсетілмейді. ағымдағы сұранымға сәйкес келетін құжаттың мағынасы бар, мұнда 5 жағдайда group.limit = 1 кодын бергеніңіз дұрыс. Бұл топта көптеген құжаттар болса да, топқа 1 құжат. Сұрауыңызда group.limit = -1 пайдалануды ұсынамын, ол нәтижеде барлық 5 құжатты қайтарады.

Қосымша ақпарат алу үшін төмендегі мәліметтерді қараңыз.

Өрістерді жинау және ең көп топты қосу

http://wiki.apache.org/solr/FieldCollapsing

1
қосылды