Есть ли способ поиска по подстроке документов CouchDB - PullRequest
4 голосов
/ 23 ноября 2010

CouchDB дает возможность поиска значений из стартовой клавиши, для точной пары ключ-значение и т. Д. Но есть ли способ поиска подстроки в указанном поле?

Проблема в следующем. Наша новостная база содержит около 40 000 новостных документов. Скажем, у них есть поля title, content и url. Мы хотим найти новостные документы, которые имеют "ресторан" в их title. Есть ли способ сделать это?

Просмотр сопоставления Вики-страница ничего не говорит :( И мне кажется странным, что нет инструмента для решения этой проблемы, и все, что я могу сделать, это просто анализировать результаты JSON с помощью Python, PHP или чего-то еще. В MySQL это просто функция LOCATE () ..

Ответы [ 2 ]

6 голосов
/ 24 ноября 2010

Использование couchdb-lucene .

4 голосов
/ 11 апреля 2011

Будь осторожен здесь.Lucene - не всегда лучший ответ.

Если вы ищете только в одном ограниченном поле и ищете только слово, как ресторан, то lucene, который действительно предназначен для токенизации больших текстов / документов, может быть слишком излишним, вы можете получитьтот же эффект, разделяя заголовок.

function(doc){
         var stringarray = doc.title.split(" ");
         for(var idx in stringarray)
         emit(stringarray[idx],doc);

        }

Также Lucene и Couchdb не поддерживают поиск по подстроке, где строка находится не в начале слова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...