2013-09-29 3 views
1

사용자 지정 Solr 필터 클래스의 인덱싱 된 토큰에 액세스하려고합니다. 이 클래스는 schema.xml<filter /> 태그가있는 일반 필터입니다. 이것이 가능한가?Solr 필터 클래스의 인덱싱 된 토큰에 액세스

약간의 배경 : 쿼리가 들어 오면 일부 쿼리 토큰을 다른 토큰으로 바꾸고 싶지만이 필드의 인덱스에있는 경우에만 사용합니다. 예를 들어 쿼리 토큰을 와일드 카드 검색과 같은 일종의 쿼리 토큰으로 시작하는 인덱스의 모든 토큰으로 대체한다고 가정 해보십시오. "text : te"를 쿼리 할 때 "text : test", "tent"및 "temple"이 필드 "text"의 색인에 있으면 실제 쿼리는 "text : test | text : tent | text : temple"일 수 있습니다.

API (TokenFilter, TokenStream, AttributeSource)를 둘러 보았지만 인덱스에 액세스 할 수있는 방법을 찾지 못했습니다. 현재 어떤 필드가 처리 중인지에 대한 정보도 찾을 수 없지만 개념적으로 이것이 의미가 없을 수 있음을 알 수 있습니다.

색인에 액세스 할 수있는 방법이 있습니까? 결국 내가 필요로하는 것은 org.apache.lucene.index.Terms의 인스턴스입니다.

답변

0

방법을 통해 PrefixQuery이 이미 수행하는 것 (및 일반적으로 MultiTermQuerys)을 설명합니다. 충분하지 않은 이유가 있습니까?

PrefixQuery 또는 WildcardQuery과 같이 Lucene의 제공된 검색어를 사용하지 않으려는 이유가 있습니까?

+0

[EDismax] (http://lucene.apache.org/solr/4_4_0/solr-core/org/apache/solr/search/ExtendedDismaxQParser.html)를 사용합니다. 'PrefixQuery'를 얻기 위해서'test *'와 같은 검색 쿼리를 만들어야합니다. 맞습니까? 프리픽스 검색이 자동으로 수행되어야하는 맥락에 따라 사용자가 수동으로이 작업을 수행하지 못하도록하고 싶습니다. –

+0

문맥에 따라 prefixquery를 자동으로 수행하는 edismax 기능이 있다고 생각하지 않습니다. 적절한 경우 구현시 사용자 쿼리 끝에'*'를 추가하는 것이 좋습니다. – femtoRgon