使用MongoDB和PHP进行全文搜索

时间:2015-10-17 15:56:37

标签: php mongodb search mongodb-query

我正在尝试使用MongoDB和PHP来创建数据库的全文搜索。有一个title属性和一个body属性。因此,例如,示例条目看起来像这样:

{ title : 'University of Maine', body: 'A university located in the state of Maine.'}

我使用的当前代码仅在搜索词与标题中的内容匹配时返回匹配项:

$results = $this->database->find(['text' => ['$search' => $search_word]]);

我希望它还能返回匹配正文的搜索字词的结果。例如,如果我有另一个条目:

{title: 'Steven King', body: 'A famous author who attended the University of Maine.'}

我的搜索词是'缅因大学',这两个条目将被退回。我拥有的当前代码(上图)只会返回缅因大学'。如何修改当前查找以搜索body属性?

1 个答案:

答案 0 :(得分:0)

您想要的是允许在文档中的所有字段上进行文本搜索。要做到这一点,需要创建一个wildcard text indexes

db.collection.createIndex( { "$**": "text" } )

然后您的查询将返回包含给定字符串的所有文档。您还可以控制search results with weights

使用PHP驱动程序创建索引的语法是:

$collection->createIndex(array('$**' => 'text'));