2013-10-15 7 views
-1

ElasticSearch에서 대소 문자 독립적 인 결과 점수를 반환하고 싶습니다. 모두 "집"과 "하우스"가있을 것입니다, 이상적인 세계에서는ElasticSearch가 대소 문자 독립적 인 점수를 반환하는 방법은 무엇입니까?

"House" => score: 0.6868894, "House on the hill" => score: 0.52345484 "HOUSE" => score: 0.52200186

: 예를 들어, 내가 문자열 "HOUSE"또는 ("집") 나는 다음과 같은 결과를 얻을 쿼리 가정 1.0의 점수와 "언덕 위의 집"0.5의 점수.

지금까지 custom analyser을 추가하려고 시도했지만 지금은 omit_norms 옵션을보고 있습니다. 그들은 CASE_INSENSITIVE 플래그를 가지고 있기 때문에 패턴을 고려 중입니다. 불행히도 공식 문서에 예제와 코드 스 니펫이 없다는 것을 알게되었습니다 ...

누구나 대소 문자 독립적으로 점수를 획득하는 데 필요한 매개 변수를 포함하는 쿼리의 코드 스 니펫/예제를 제공 할 수 있습니까? Tire for Rails를 사용하여 솔루션을 제공 할 수있는 모든 사람에게 추가 인식.

매핑 mapping _source: {} do indexes :id, type: 'integer' indexes :value, :analyzer => 'string_lowercase' end

분석기는 사용자 정의 분석기가

QUERY { "query": { "filtered": { "query": { "query_string": { "query": "house" } } } }, "fields": ["value"], "from": 0, "size": 50, "sort": { "_score": { "order": "desc" } }, "explain": true }

ElasticSearch 0.90.5 위에서 언급 한 **; Rails 4.0.0; 타이어 (보석) 0.6.0

+0

건배. es 기본값을 사용하면 모든 것이 소문자로 표시되므로 점수 차이는 다른 것으로 인해 발생합니다. 더 많이 알기 위해 설명 출력을 살펴보십시오. – javanna

답변

0

더 나은 아직 문제는 많은 (5 기본적으로) 샤드를 사용하여 문서를 채점하고 각 샤드가 점수를 계산하기 위해 할당 된 문서만을 사용하기 때문에 발생합니다. 테스트 데이터를 사용하고 DB가 거의 비어 있기 때문에 점수는 완전히 사라졌습니다. 답변은 dfs_query_then_fetch 검색 유형을 사용하는 것입니다 (적어도 개발 중에 ...). Rails/Tire에 구현하거나 ES에서 기본값으로 설정하는 방법을 계속 검색합니다. 대소 민감성이 문제와 아무 상관이, 당신이 당신의 데이터를 분석하는 방법에 따라 달라하지 않는 NIC

+0

귀하의 문제가 무엇인지 이해하지만 귀하의 질문에 적절하게 설명되지 않았다고 생각합니다. 귀하의 질문과 답변은 서로 관련이 없습니다. 어쩌면 당신은 당신의 질문을 향상시키고 당신의 문제를 상세히 설명 할 수 있습니다. 그것은 당신의 답을 확실히 이끌어 낼 것입니다. – javanna