使用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'));
我哪里会添加索引以及它将如何在PHP看? – user3044396
在您的收藏上创建索引。您将需要删除现有的文本索引 – styvane