使用MongoDB和PHP做全文搜索

问题描述:

我想用MongoDB和PHP来创建我的数据库的全文搜索。有一个title属性和一个body属性。因此,例如,一个样品条目将是这个样子:使用MongoDB和PHP做全文搜索

{ 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属性?

你想要什么是允许在你的文档中的所有领域的文本搜索。要做到这一点需要创建一个wildcard text indexes

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

那么你的查询将返回包含给定的字符串的所有文档。您也可以控制search results with weights

用PHP创建驱动指数的语法是:

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

我哪里会添加索引以及它将如何在PHP看? – user3044396

+0

在您的收藏上创建索引。您将需要删除现有的文本索引 – styvane