2015-10-17 10 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

Смежные вопросы