0

터키어로 150,000 개가 넘는 기사가 있습니다. 나는 자연 언어 처리 연구를위한 기사를 사용할 것이다. 기사 처리 후 기사당 단어 및 빈도를 저장하고 싶습니다.많은 기사에 대한 단어 목록 - 문서 용어 행렬

이제 RDBS에 저장하고 있습니다. -> article_id를, 텍스트
단어 -> word_id, 유형, 단어
단어 - 조 -에> word_id에 대한 ID, word_id, article_id를, 주파수 (인덱스, 인덱스

기사 :

나는 3 개 테이블이 article_id를)

나는 기사 articl 당

  • 한 단어의 주파수

    • 에 대한 모든 단어를 쿼리합니다 모든 기사와있는 전자
    • 워드 발생 기사

  • 나는 단어 - 문서 테이블의 행 수백만있다. 저는 항상이 프로젝트에서 RDBS와 함께 일했습니다. mysql을 시작으로 오라클을 사용했다. 하지만 oracle을 사용하지 않고 mysql보다 나은 성능을 원한다.

    또한 4GB 램이 장착 된 컴퓨터에서이 작업을 처리해야합니다.
    간단히 말해, 문서 용어 행렬을 저장하고 쿼리를 만드는 방법은 무엇입니까? 성능이 필요합니다. "키 - 값 데이터베이스"가 mysql 성능을 이길 수 있습니까? 또는 mysql을 이길 수있는 것은 무엇입니까?

    답변 프로그래밍 언어에 의존한다면 저는 파이썬으로 코드를 작성하고 있습니다. 하지만 C/C++, Java는 괜찮습니다.

    답변

    0

    150k 기사의 경우 words_articles 테이블에 수억 개의 행이 있어야합니다. 이것은 MySQL을 적절하게 구성하는 한 관리가 가능합니다.

    몇 가지 팁 :

    • 이 테이블이, 이노의 MyISAM하지 있는지 확인합니다.
    • words_articles 테이블의 id 필드를 삭제하고 make (word_id, article_id)를 기본 키로 만듭니다. 또한, word_id에 대해 별도의 색인을 생성하고 words_articles 테이블에 article_id를 :

      ALTER TABLE words_articles 
      DROP PRIMARY KEY, 
      ADD PRIMARY KEY (word_id, article_id), 
      ADD INDEX (word_id), 
      ADD INDEX (article_id); 
      

      (단일 ALTER 문에서 모든 일을 훨씬 더 나은 성능을 제공합니다).

      ALTER TABLE words ADD INDEX (word); 
      
    • 비틀기의 my.cnf의 :

    • 단어 테이블에 단어에 대한 인덱스를 만듭니다. 특히 버퍼 크기를 늘리십시오 (특히 key_buffer_size). my-huge.cnf가 좋은 출발점이 될 수 있습니다.