Solr:如何实现这个逻辑?

时间:2013-04-23 17:45:30

标签: solr

我有以下情况。假设我有一张像这样的大桌子。

Id(unique)     returnMe             desc                       name         value
1              user1            all those living in usa        country           USA
2.             user2            all those like game            game              football
3.             user1            my hobbies are                 hobby             guitar   

现在,我如何获得以下查询的结果(returnMe)。

1. For all those users who live in usa AND like guitar
2. For all those users who live in usa OR like guitar.

请不要修改查询。

对于我的solConfig.xml'desc','name','value'是可搜索的,可索引的字段。

感谢您的帮助。

我正在编辑这个来解释我的逻辑..

Step 1: Break query on AND like (live in USA) AND (like guitar)
Step 2: Then select returnMes from first query and returnMes from second query.
Step 3: Take common returnMes, returned from first query and second query.

Solr有没有办法做到这一点。我们可以通过Solr“加入”或不加入或其他方式吗? 我确实想在我的PHP中这样做,这将是巨大的开销。

1 个答案:

答案 0 :(得分:0)

您需要以某种方式修改查询。解析查询并向其添加括号的简单步骤,以及可能要搜索的字段名称。您可以合理地轻松地将这些查询转换为以下内容:

(For all those users who live in usa) AND (like guitar)
(For all those users who live in usa) OR (like guitar)

或者你可以删除“对所有用户而言”并且简单地说:

(live in usa) AND (like guitar)
(live in usa) OR (like guitar)

并将查询字段设置为value。当然,如果您的文档包含value=users或类似的内容,则可能会遇到问题,因为它会搜索value字段中的每个字词。

如果您真的希望能够使用自然语言,那么您可以查看OpenNLP项目。