有没有办法在CouchDB文档中搜索子字符串

时间:2010-11-23 18:40:15

标签: couchdb

CouchDB提供了从startkey搜索值的机会,以及精确的键值对等 但有没有办法在指定的字段中搜索子字符串?

问题是这样的。我们的新闻数据库包含大约40,000个新闻文件。比如说,他们有titlecontenturl字段。我们想找到title中有“餐馆”的新闻文件。有没有办法做到这一点?

View Collation wiki页面什么都没说:(对我来说似乎很奇怪,没有工具来处理这个问题,我只能用Python,PHP或其他方式解析JSON结果。在MySQL中它是只需LOCATE()函数..

2 个答案:

答案 0 :(得分:6)

使用couchdb-lucene

答案 1 :(得分:4)

这里要小心。 Lucene并不总是最好的答案。

如果您只搜索一个有限的字段并且只搜索像餐馆这样的单词那么lucene实际上是用来标记大型文本/文档可能会有点矫枉过正,您可以通过拆分标题获得相同的效果。

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

        }

Lucene和Couchdb也不支持子字符串搜索,其中字符串不在单词的开头。