lucene-solr-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jan Nekuda <jan.nek...@gmail.com>
Subject Re: block join - search together at parent and childern
Date Thu, 16 Mar 2017 19:54:51 GMT
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.nekuda@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

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message