Lucene一對多問題

2021-08-29 19:20:31 字數 601 閱讀 3359

這兩天做專案碰到了個lucene一對多問題,原資料庫有2張表。乙個是酒店表(hotel),對應的字段有酒店id(hotelid),酒店名字(name),另乙個是房型表(room),  對應的字段有酒店id(hotelid),房型**(price)。

酒店和房型是一對多關係,比如乙個酒店可以有標準間,豪華間等等。

現需求是輸入最大**和最小**要查出符合條件的酒店資料,如果用sql很簡單就解決了。但現在要求用lucene查詢索引資料。

我的思路是 建立2套索引乙個是酒店索引,乙個是房型索引。假如使用者輸入的搜素條件是**100-1000,名字帶有北京的酒店,那麼我的做法是:

1.先去查詢房型索引,得到符合的酒店id,再把重複的酒店id過濾掉。

對應的lucene查詢語句:+price:[100 to 1000]

這樣會得到乙個酒店id的集合,然後再過濾重複的酒店id。

2.再去查酒店索引

對應的lucene查詢語句:(假如符合**的酒店id為1,3,5)

+name:北京 +(hotelid:1 or hotelid:3 or hotelid:5)

這樣就可以得到想要的結果了,但是我覺得有些麻煩,哪位有更好的思路提供給我,小弟不勝感激。

一對多 多對一

pip install djangorestframework 3.9.2 pip install markdown 3.0.1 markdown support for the browsable api.pip install django filter 2.1.0 filtering supp...

JavaWeb mybatis一對一 一對多查詢

mybatis查詢基本返回資料基本用到的都是resulttype與resultmap,resulttype必須po類與sql欄位一致,而resultmap可以不一致通過配置對映。本篇文章一是要講解resulttype與resultmap如何使用 二是重點講解一對一與一對多查詢resultmap的使用...

mysql join 一對多 Join 一對多連線

資料庫常見的join方式有三種 inner join,left outter join,right outter join 還有一種full join,因不常用,本文不討論 這三種連線方式都是將兩個以上的表通過on條件語句,拼成乙個大表。以下是它們的共同點 1.關於左右表的概念。左表指的是在sql語...