2017-11-10 5 views
0

username:[email protected]*에 대한 쿼리는 http://localhost:8983/solr/user/select?q=username%3Auser%40site*&wt=json&indent=true입니다. 그러나 결과의 수는 0입니다. * 숫자를 제거하면 올바른 결과를 얻을 수 있습니다. 쿼리 username:userusername:user*을 사용하면 결과가 동일합니다.solr 쿼리에서 "@"다음에 오는 "*"을 의미하는 것

@ 이후에 *을 사용하면 어떻게됩니까?

답변

1

유일한 일은 *이 쿼리를 와일드 카드 쿼리로 만드는 것입니다. 쿼리에 와일드 카드가 있으면 분석 (특정 멀티 테어웨어 필터가 여전히 적용되므로 정확하지는 않음)이 발생합니다. 따라서 필드가 @에서 예를 들어 usersite 토큰으로 분할되는 경우 색인을 생성 할 때 동일한 분할이 발생하지 않습니다.

그래서 Lucene은 [email protected]으로 시작하는 토큰을 찾으려고 시도하지만 색인에서 사용할 수있는 토큰은 usersite이므로 일치하지 않습니다. user*을 검색해 본다면 아마 적중률이 높아질 것입니다.

Solr의 관리자 아래에있는 분석 페이지를 사용하여 필드가 입력에 대해 처리되는 방법을 확인할 수 있습니다.

+0

그리고 쿼리를 올바르게 다시 작성하는 방법은 무엇입니까? –

+2

schema.xml을 변경하고'username'에'KeywordTokenizerFactory'를 사용하여이 문제를 해결할 수 있습니다. 그러면'@ '를 사용하여 질의를 할 수 있습니다. – drjz

+0

.. 목표는 user @ domain 문자열의 접두어로 쿼리하는 것이기 때문에 KeywordTokenizer를 사용해야합니다.이 경우 별도의 입력란을 사용하고 copyField 명령어를 사용하여 검색어로 내용을 복사합니다. 접두어. – MatsLindh