2013-05-01 9 views
6

Я ищу способ сортировки результатов по значению поля при выполнении полнотекстового поиска с помощью mongodb 2.4.Сортировка с MongoDB полнотекстовый поиск

Моя команда поиска текст выглядит следующим образом:

db.books.runCommand("text", { search: "science" }) 

То, что я хотел бы сделать что-то вроде:

db.books.runCommand("text", { search: "science", "sort": "rating" }) 

Я вижу в документации, которая существует предел параметра, но а не сортировать результаты, отличные от сортировки по умолчанию по результативности.

Повторная сортировка результатов, вероятно, будет неэффективной. Каков хороший способ сделать это?

+0

возможно дубликат [MongoDB поиска текста и распоряжения] (http://stackoverflow.com/questions/19336391/mongodb-te xt-search-and-order-by) – JohnnyHK

ответ

-1

Невозможно отсортировать не по счету. Вы можете только control search results with weights, но это не вы на самом деле ищете. В этом случае я предлагаю вам использовать Sphinx. Он очень хорошо интегрируется с MongoDb и обеспечивает действительно богатые возможности поиска.

1

была такая же проблема, удалось решить проблему (PyMongo), используя вместо RunCommand вещи в «$ мета» оператора:

# create text index 
db.collection.ensure_index([("textField", "text")], name = "Text_search_index")  
# query  
queryDict = { "$text": { "$search": ""science"}}  
# cursor 
cursor = db.collection.find(queryDict, {'score': {'$meta': 'textScore'}, "_id":1}).sort([('score', {'$meta': 'textScore'})]).limit(limit_value) 

Похоже, это доступно только from 2.6 version по крайней мере, в PyMongo

Также в Монго оболочки этот эквивалент:

db.collection.ensureIndex({"textField":"text"})  
queryDict = { "$text": { "$search": "science"}}  
db.collection.find(queryDict, {'score': {'$meta': 'textScore'}}).sort({'score': {'$met 
a': 'textScore'}}).limit(100) 
+0

Также, если у вас есть «TypeError: второй элемент в каждой паре ключей должен быть 1, -1, '2d», «geoHaystack» или другой действительный спецификатор индекса MongoDB ». Рассмотрите возможность установки последней версии драйвера pymongo. – scoulomb

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