2013-08-18 11 views
4

GIN/GiST 인덱스가있는 PostgreSQL 9.3의 전체 텍스트 검색이 tf-idf (용어 빈도 - 문서 빈도 용어)를 사용하는지 알고 싶습니다.PostgreSQL은 tf-idf를 사용합니까?

특히, 필자의 필자 칼럼에는 좀 더 유명하지만 일부는 매우 고유 한 (즉, 이름) 단어가 있습니다. 일치하는 고유 단어가 일반적인 단어보다 높은 가중치를 갖도록이 열을 색인화하려고합니다.

답변

-1

주로. 자세한 내용은 http://www.postgresql.org/docs/9.1/static/textsearch-controls.html

에 설명되어 있습니다. 기본적인 문제는 용어 빈도가 실제로는 색인을 생성하는 코퍼스를 기반으로하는 것이 아니라 사전에 설정하는 것입니다. 그래서 제게는 언어를 적절히 선택하는 한 괜찮을 것입니다.

+1

tf-idf는 문서 빈/사전 빈도가 아닌 문서 빈도를 나타냅니다. – mgoldwasser

3

아니오 ts_rank 함수 내에서 전역 (코퍼스) 빈도를 사용하여 결과를 순위 지정하는 기본 방법이 없습니다. "|"치와와 강아지 "다음 두 문서는 단어의 상대적으로 낮은 주파수에도 불구하고 같은 순위를했을 내가 검색하는 경우

http://www.postgresql.org/docs/9.3/static/textsearch-controls.html

그래서 : 순위 알고리즘은 그러나 문서 내 빈도에 따라 순위를 않습니다

"dog lovers have an average of 1.5 dogs" 
: 치와와 : 문서에서 두 개 ""는 막아야 토큰이 포함되어 있기 때문에

"I want a dog" 
"I want a chihuahua" 

그러나, 다음 줄은 위의 이전 두 줄보다 높은 평가받을 것 "

요약하면 문서 내의 용어의 빈도가 높을수록 순위는 높아지지만 코퍼스의 낮은 빈도는 아무런 영향을 미치지 않습니다.

주의 사항 : 텍스트 검색은 중지 단어를 무시하므로 "the", "a", "of", "for"등의 초고 빈도 단어는 일치하지 않습니다. 언어)

2

아니요 Postgres는 문서간에 유사성 척도로 TF-IDF를 사용하지 않습니다.

ts_rank은 문서에 쿼리 용어가 자주 포함되어있는 경우 높습니다. 용어의 전역 빈도를 고려하지 않습니다.

ts_rank_cd은 문서에 검색어가 서로 가깝고 더 자주 포함되어있는 경우 높습니다. 용어의 전역 빈도를 고려하지 않습니다.

smlar이라는 텍스트 검색 작성자의 확장자가있어 TF-IDF를 사용하여 배열 간의 유사성을 계산할 수 있습니다. 또한 벡터화 된 배열을 배열로 변환하고 빠른 색인화를 지원합니다.