2012-12-10 3 views
3

와일드 카드 쿼리를 사용하여 이름을 검색하지만 잘 작동하지 않는 ascii 문자를 검색 할 때 과 같이 사용자가 "Hélè *"를 검색 할 때처럼 검색 할 수 없습니다.ascii 접기를 사용하는 elasticsearch 와일드 카드 쿼리

나는 ascii 폴딩과 이름 필드에 소문자를 사용하는 분석기를 이미 만들었다.

query_string에서 검색 할 때도 잘 작동합니다. 그것은 와일드 카드가 ASCII 접기 및 쿼리 문자열을 분석하지 않는다는 것을 의미합니까? 그렇다면 아스키 와일드 카드를 얻을 수있는 방법이 있습니까?

어떤 도움을 주시면 대단히 감사하겠습니다.

감사합니다, SOLR에서 Mohsin

+0

도움이 필요하면 질문에 세부 정보를 추가해야합니다. 당신의 매핑, 정확히 작동하지 않는 것. – javanna

답변

5

쿼리를 사용하여 analyze_wildcardtrue으로 설정하십시오.

기본적으로 elasticsearch는 와일드 카드 쿼리의 텍스트를 분석하지 않으므로 일부 쿼리의 경우에만 lowercase됩니다. 이 때문에 쿼리는 hélè으로 시작하는 모든 용어를 검색하며 ascii 폴딩 필터로 인해 해당 용어가 색인에 없습니다.

0

거기 ReversedWildcardFilterFactory이며이 인덱스 시간에 사용됩니다. 쿼리에 와일드 카드 문자가 포함되어 있으면 쿼리가 ascii로 변환되지 않으면 ASCII로 변환되고 검색됩니다. ASCIIFoldingFilterFactory 뒤에 정의 할 수 있습니다.

Lucene과 비슷한 것이 있을지 모르지만, source code을보고 FilterFactory를 작성할 수 있습니다.

this document도 유용합니다.