2013-09-29 29 views
1

我想訪問自定義Solr過濾器類中的索引令牌。該類是來自schema.xml<filter />標記的常規過濾器。這可能嗎?訪問Solr過濾器類中的索引令牌

稍微背景:當查詢進來時,我想用其他標記替換一些查詢標記,但前提是這些標記位於該字段的索引中。想象一下,例如,我會用索引中的所有標記替換查詢標記,這些標記以查詢標記開頭,有點像通配符搜索。當查詢「text:te」時,如果「test」,「tent」和「temple」在字段「text」的索引中,實際查詢可能是「text:test | text:tent | text:temple」。

我環顧了API(TokenFilterTokenStream,AttributeSource),但找不到任何方法來訪問索引。我甚至無法找到關於哪個字段正在處理的信息,但我看到這在概念上可能沒有意義。

那麼,有沒有辦法訪問索引?我最終需要的是一個org.apache.lucene.index.Terms的實例。

回答

0

你所描述的是PrefixQuery已經做了什麼(和MultiTermQuerys一般),通過rewrite方法。有沒有足夠的理由。

是否有某些原因,您不想使用Lucene提供的查詢,如PrefixQueryWildcardQuery

+0

我使用[EDismax](http://lucene.apache.org/solr/4_4_0/solr-core/org/apache/solr/search/ExtendedDismaxQParser.html)。爲了得到'PrefixQuery',我必須制定我的搜索查詢,比如'test *',對吧?我想讓我的用戶不必手動執行此操作,具體取決於前綴搜索應自動發生的上下文。 –

+0

我不認爲存在任何edismax功能,根據上下文自動執行prefixquery。我建議在實現中將'*'添加到用戶查詢的末尾(適當時)。 – femtoRgon