2012-11-14 85 views
0

在我的应用程序中,我有几个搜索,如用户搜索,讨论搜索,博客搜索等。现在我还需要一个“全局搜索”,它应该会导致所有类型的搜索。我的问题是,任何类型的搜索都有几个限制。Solr - 复杂查询

用户搜索:

q=userLastName:*searchString*^9 userFirstName:*searchString*^10&fq=documentType:4 AND marketId:(281807 1950) 

讨论搜索:

q=userLastNameLowerBoost:*searchString*^6 userFirstNameLowerBoost:*searchString*^5 title:*searchString*&fq=(documentType:2 AND boardType:2 AND country:3028) OR (documentType:2 AND boardType:1) 

我怎么能在一个查询合并这些查询?那可能吗?

+0

'(user_search)(discussion_search)'因为这 – ajreal

+0

您可以使用copyfield用户搜索和讨论搜索内容复制到新的领域,在运行全局搜索一样简单这个新领域。 –

+0

'(user_search)(discussion_search)' - >不会因为过滤器查询而工作?复制域也不是一个好主意,因为这些领域的一些提升(忘了说).. – user1731299

回答

0

我的查询示例只是查询中的片段。如果我提供更多细节,这将超出讨论的范围。每个查询(用户,讨论区,博客,..)都有几个字段,也有一些相同的字段。所有查询都有一个'fq'查询这是问题。我通过documentType来限制(1 =博客,2 =讨论,..),同时我也必须受到不同市场的限制。

如果我合并这两个查询,我失去了结果。

例如

user search result = 60 results 
    discussion search results = 10 results 
    merge search results = 68 result 
    --> 2 lost 

FQ查询:

(documentType:4 AND marketId:(1956 1960 ..and so on..)) OR (documentType:3 AND marketId:(1956 ..and so son..))