2014-09-20 83 views
0

我有一個搜索索引的Cloudant數據庫。在搜索索引中,我索引了我的文檔的標題。例如,搜索 'rijkspersoneel':Cloudant搜索:爲什麼我的通配符不起作用?

http://wetten.cloudant.com/regelingen/_design/RegelingInfo/_search/regeling?q=title:rijkspersoneel

返回48行。

但是,當我用'?'代替'o'時,通配符:

http://wetten.cloudant.com/regelingen/_design/RegelingInfo/_search/regeling?q=title:rijkspers?neel

我得到0的結果。這是爲什麼? Cloudant docs說這也應該匹配'rijkspersoneel'!

回答

1

我以前的答案肯定是錯的。內部wildcads似乎支持。試試:

title:rijkspe*on* 
title rijksper?on* 

很確定這裏發生了什麼是一個分析問題。相當肯定你正在使用詞幹分析器。我並不十分熟悉cloudant及其實現,但在Lucene中,通配符查詢不受術語查詢的同樣分析。我猜你對這個領域的分析包括一個詞幹分析者,在這種情況下,「rijkspersoneel」實際上被索引爲「rijkspersone」。

所以,當你搜索

rijkspersonee* 

rijkper?oneel 

由於「厄爾尼諾」是從索引形狀的終端丟失,你找不到匹配。當搜索rijkpersoneel時,它確實得到了分析,並且您搜索單詞的詞幹形式,並且會查找匹配。

莖和通配符只是不相處。

+0

Boo!這是Lucene的一個必要缺點嗎?我們不能索引詞幹和完整的單詞嗎? – Maarten 2014-09-21 20:18:35

+1

這肯定是一個選擇,是的。你可以實現一個分析器,它可以在相同的位置增量索引,或者簡單地在不同字段中索引詞幹和非詞性化的文本,並根據需要搜索每一個或者生成的文本。 – femtoRgon 2014-09-21 20:22:33