2011-04-18 146 views
1

我正在使用apache-solr-1.4.1和jdk1.6.0_14。Apache SOLR按類別搜索

我有以下情況。 我有3類數據索引在SOLR,即城市,州,國家。 當我從SOLR查詢數據時,我需要SOLR的搜索結果根據以下標準:

在對SOLR的單個查詢中,我需要從SOLR中獲取的數據按每個類別分組,每個類別都有一個預定義的結果計數。

如何在SOLR中指定此條件?

我試過使用SOLR Field Collapsing功能,但我無法從SOLR獲得所需的輸出。

請建議。

回答

3

我的解決方案並不完全符合您的要求,但是我認爲SOLR最擅長的是全文搜索。我不建議按「類別」對結果進行分組,而是建議您按相關性分數對結果進行排序,但也會爲類別值提供方面計數。根據我的經驗,用戶期望「搜索」的行爲與Google相似,最高匹配度最高。在大多數情況下,偏離這種規範會使用戶感到困惑。

如果你想完全按照你的要求(實際結果按類別分組),那麼你可以使用關係數據庫,並做一個group_by或寫一個自定義的function query與SOLR(我不能建議,因爲我從來沒有這樣做過)。

更多信息:使用適當的字段(例如,名稱,人口等等,但還要添加一個名爲「類別」的字段,該字段將具有CITIES,STATES或COUNTRIES的值。然後執行標準的SOLR搜索,該搜索將按照相關性的順序返回結果 - 即頂部的最佳匹配。作爲請求的一部分,您可以指定一個facet.field=category,它將返回每個給定類別(在「構面」結果部分中)的搜索結果的計數。然後在用戶界面中,您可以爲每個執行原始搜索的類別構面創建鏈接,並加上&fq=category:CITIES等,從而將結果限制爲僅限該類別。請參閱SOLR wiki上的facetting overview以獲取更多信息。

+0

我同意@nickdos,你應該利用Solr中的faceting來實現你想要的結果。 – 2011-04-18 12:22:24