2015-10-17 89 views
1

我想用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屬性?

回答

0

你想要什麼是允許在你的文檔中的所有領域的文本搜索。要做到這一點需要創建一個wildcard text indexes

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

那麼你的查詢將返回包含給定的字符串的所有文檔。您也可以控制search results with weights

用PHP創建驅動指數的語法是:

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

我哪裏會添加索引以及它將如何在PHP看? – user3044396

+0

在您的收藏上創建索引。您將需要刪除現有的文本索引 – styvane