Hello Jan, What if you combine child and parent dismaxes like below q={!edismax qf=$parentfields}foo bar {!parent ..}{!dismax qf=$childfields v=$childclauses}&childclauses=foo bar +type:child&parentfields=...& parentfields=...
On Thu, Mar 16, 2017 at 10:54 PM, Jan Nekuda <jan.nek...@gmail.com> wrote: > Hello Mikhail, > > thanks for fast answer. The problem is, that I want to have the dismax on > child and parent together - to have the filter evaluated together. > > I need to have documents: > > > path: car > > type:car > > color:red > > first_country: CZ > > name:seat > > > > path: car\engine > > type:engine > > power:63KW > > > > path: car\engine\manufacturer > > type:manufacturer > > name: xx > > country:PL > > > path: car > > type:car > > color:green > > first_country: CZ > > name:skoda > > > > path: car\engine > > type:engine > > power:88KW > > > > path: car\engine\manufacturer > > type:manufacturer > > name: yy > > country:PL > > > where car is parent document engine is its child a manufacturer is child > of engine and the structure can be deep. > > I need to make a query with edismax over fields color, first_country, > power, name, country over parent and all childern. > > when I ask then "seat 63 kw" i need to get seat car > > the same if I will write only "seat" or only "63kw" or only "xx" > > but if I will write "seat 88kw" i expect that i will get no result > > I need to return parents in which tree are all the words which I wrote to > query. > > How I wrote before my solution was to split the query text and use q:*:* > and for each /word/ in query make > > fq={!parent which=type:car}/word// > / > > //and edismax with qf=color, first_country, power, name, country > > Thank you for your time:) > > Jan > > > Dne 16.03.2017 v 20:00 Mikhail Khludnev napsal(a): > > > Hello, >> >> It's hard to get into the problem. but you probably want to have dismax on >> child level: >> q={!parent ...}{!edismax qf='childF1 childF2' v=$chq}&chq=foo bar >> It's usually broken because child query might match parents which is not >> allowed. Thus, it's probably can solved by adding +type:child into chq. >> IIRC edismax supports lucene syntax. >> >> On Thu, Mar 16, 2017 at 4:47 PM, Jan Nekuda <jan.nek...@gmail.com> wrote: >> >> Hi, >>> I have a question for which I wasn't able to find a good solution. >>> I have this structure of documents >>> >>> A >>> |\ >>> | \ >>> B \ >>> \ >>> C >>> \ >>> \ >>> \ >>> D >>> >>> Document type A has fields id_number, date_from, date_to >>> Document type C has fields first_name, surname, birthdate >>> Document type D AND B has fields street_name, house_number, city >>> >>> >>> I want to find *all parents with block join and edismax*. >>> The problem is that I have found that possible is find children by >>> parent, >>> or parent by children. >>> *I want to find parent by values in parent and in children*. I want to >>> use >>> edismax with all fields from all documents (id_number, date_from, >>> date_to, >>> has fields first_name, surname, birthdate,street_name, house_number, >>> city). >>> I want to write *Hynek* AND *Brojova* AND 14 and I expect that it returns >>> document A because it found Hynek in surname, Brojova in street and 14 in >>> house number. >>> This is easy with {!parent which=type:A} >>> the problem is, that I'm not able to find by condition 789 AND *Brojova* >>> where 789 is id_number from type A and Brojova is Street from D. >>> >>> In short I need to find all parents of tree (parent and childern) in >>> which >>> are matched all the word which i send to condition >>> >>> >>> My only solution is to make root type X. Then A will be its child. Then I >>> can use {!parent which=type:X}. >>> Than this will work: >>> >>> http://localhost:8983/solr/demo/select?q=*:*&fq={!parent >>> which=type:X}brojova*&fq={!parent which=type:X}16&wt=json& >>> indent=true&defType=edismax&qf=id_number date_from date_to has fields >>> first_name surname birthdate street_name house_number >>> city&stopwords=true& >>> lowercaseOperators=true >>> >>> >>> But I believe it can be solved much better. >>> >>> X >>> | >>> A >>> |\ >>> | \ >>> B \ >>> \ >>> C >>> \ >>> \ >>> \ >>> D >>> >>> >>> Thanks for your help >>> Jan >>> >>> >> >> > > > --- > Tato zpráva byla zkontrolována na viry programem Avast Antivirus. > https://www.avast.com/antivirus > -- Sincerely yours Mikhail Khludnev