0

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

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 中这样做,这将是巨大的开销。

4

1 回答 1

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项目。

于 2013-04-23T20:30:05.047 回答