我正在尝试使用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属性?
答案 0 :(得分:0)
您想要的是允许在文档中的所有字段上进行文本搜索。要做到这一点,需要创建一个wildcard text indexes:
db.collection.createIndex( { "$**": "text" } )
然后您的查询将返回包含给定字符串的所有文档。您还可以控制search results with weights。
使用PHP驱动程序创建索引的语法是:
$collection->createIndex(array('$**' => 'text'));