2013-08-26 2 views
1

스핑크스를 사용할 때 결과가 정확하지 않은 것으로 나타났습니다.스핑크스 세그먼트 규칙에 대해서

예를 들어, 내 mysql 테이블에 'test1', 'test2', 'test.zip', 'test_zip', 'test-zip'이 포함 된 레코드가 있습니다. 'test'를 검색하면 'test.zip'및 'test-zip'. 그리고 결과에서 'test1'을 얻으 려한다면 명시 적으로 'test1'을 검색해야합니다.

내 질문은 스핑크스가 test1을 '테스트'및 '1'로 간주하지 않는 이유와 검색 결과를 원하는 경우입니다. 전체 단어의 일부를 포함하여 어떻게 할 것인가?

답변

0

기본 charset_table은 글자, 숫자 및 밑줄을 단어 문자로 설정합니다. 그 외 모든 것은 분리 기호입니다.

그래서 test1

는 "TEST1"로 인덱싱 될 수 있지만, test-ziphttp://sphinxsearch.com/docs/current.html#conf-min-infix-len 그래서 일부 단어를 일치시킬 수 있습니다 "테스트 지퍼"

이 중위/접두사 인덱스로 인덱싱 될 것이다. (스핑크스는 기본적으로 항상 전체 단어와 일치합니다.)

charset_table을 변경할 수 있기를 원한다면 숫자는 단어 문자로 간주되지 않습니다.하지만 숫자를 검색 할 수는 없습니다! - 동시에 밑줄을 넣으십시오 - 따라서 test_zip은 두 단어로 간주 될 수 있습니다.

대신에 blend_chars에 숫자를 넣을 수 있습니다. 따라서 분리 기호로도 사용할 수 있습니다.

마지막으로 regexp_filter를 사용하여 단어와 숫자를 별도의 단어로 나눌 수 있습니다.

... 가능한 네 가지 가능한 솔루션, 각각을 시도해 볼 가치가 있으며 전반적으로 어떤 것이 가장 적합한 지 결정하십시오.