我有一本關於書籍的數據集,每個書籍都可以使用一種或多種語言。每個用戶都註冊爲擁有一種或多種語言。Elasticsearch子集篩選器
當用戶搜索書籍時,我只想返回那些他們瞭解其所有語言的書籍。
例如,下面的兩本書是系統:
Book A: English, French, German
Book B: English, Greek
如果約翰被註冊爲不懂英語,德語,法語和意大利語,那麼他的查詢結果中不應包括書B.
我的系統目前使用Apache Solr編寫,其中我最終編寫了一個插件來執行子集操作(如果記錄的語言是用戶語言的子集,其中用戶的語言被聲明爲查詢)。
但是,我想轉換到Elasticsearch後端。然而,這種特定的子集行爲似乎並不是核心過濾器包的一部分。我錯過了什麼,或者我應該看看寫一個類似的插件/自定義過濾器?
您是否發現ElasticSearch(或任何其他數據庫/搜索系統)覆蓋此方法? – Tor
不 - 我最終得到了一個替代實現,在這裏我查詢(elasticsearch)書籍,然後在它們上面快速查找一下java,以確定用戶是否可以理解所有語言。如果某些語言不被理解,結果集將被標記,並將其傳遞給用戶。不過,我很樂意聽到有一種實現原始設計的方法! –
以下是我自己的筆記:https://docs.google.com/document/d/1ngZU89rWc3fQMU8CSSW_yFCyeWEmJzJRngmEl88IrvE。如果你或其他人發現了一個現成的解決方案(這可能可以處理大集),那麼讓我知道。如果我找到一些東西,我一定會回到這裏來:) – Tor