asp.net mvc 프레임 워크를 기반으로 웹 프로젝트를하고 있습니다. db로 postgre SQL을 사용하고 있습니다. 문제는 내 애플리케이션에서 검색을 구성하는 방법입니다. 한 가지 옵션은 lucene.net과 같은 .net 라이브러리를 사용하는 것입니다. 또 다른 옵션은 Postgre 전체 텍스트 검색을 사용하는 것입니다. 그래서 최선의 선택은 무엇입니까?postgres 전체 텍스트 검색
답변
저는 프로덕션 환경에서 포스트그레스를 실행하지 않았지만 테스트 DB에서 상당히 많은 양의 데이터를 가지고 테스트 해 보았습니다. 텍스트 문자열의 약 600,000 행을 인덱싱하면 평균 3 단어로 전체 텍스트 인덱스가 120MB가됩니다. 이 검색어에 대한 검색어는 이후에 각 검색 용어의 첫 번째 검색어 인 이후 매우 빠릅니다. 각 용어의 색인을 디스크에서 메모리로 가져와야합니다. 나는 시작시 전체 색인을 메모리로 끌어들이는 방법을 아직 찾지 못했다. 하나의 랩톱 HD에서 실행되기 때문에 초기의 느린 속도의 일부는 디스크 IO 관련 일 수 있습니다. 또한 120MB 인덱스에 120MB 이상의 DB 메모리가 필요한지 확실하지 않습니다.
프로덕션 응용 프로그램의 경우 Lucene for Java를 사용하고 있으며 수 GB의 인덱스 데이터로 매우 빠르게 수행합니다. Lucene의 이점은 1) DB 독립적이며 2) 배포 가능하다는 점입니다. # 1의 경우 이것은 문제가되지 않지만 기본 DB가 무엇이든 동일한 색인 코드를 사용할 수 있음을 의미합니다. # 2의 경우 응용 프로그램의 크기에 따라 다릅니다. Lucene (및 특히 Hadoop)은 다중 스레드로 설계되었으므로 공유 드라이브에 인덱스를 저장하고 여러 컴퓨터에서 동시에 검색을 실행할 수 있습니다. 인덱싱은 여전히 단일 스레드입니다. 당신이 원하든 원하지는 당신의 아키텍처가 무엇인지에 달려 있습니다. 당신은 오히려 1 개의 큰 DB 또는 1 개의 작은/매체 DB와 그것을 지원하는 몇개의 더 작은 인덱싱 서버를 가지고 있습니까?
- 1. 여러 관련 테이블에 대한 Postgres 전체 텍스트 검색
- 2. SQL 전체 텍스트 검색
- 3. 전체 텍스트 검색
- 4. 전체 텍스트 검색
- 5. MySQL의 전체 텍스트 검색
- 6. mysql 전체 텍스트 검색
- 7. 전체 텍스트 검색 순위
- 8. 전체 텍스트 검색
- 9. 전체 텍스트 검색 CONTAINSTABLE
- 10. NHibernate 전체 텍스트 검색
- 11. RoR의 전체 텍스트 검색
- 12. 전체 검색 텍스트 쿼리
- 13. 전체 텍스트 검색 2008
- 14. bigtable에서 전체 텍스트 검색
- 15. 전체 텍스트 검색 입문서?
- 16. MySql 전체 텍스트 검색
- 17. 전체 텍스트 검색 문제
- 18. 전체 텍스트 검색 문제
- 19. 전체 텍스트 검색 카탈로그
- 20. 전체 텍스트 검색 - 검색 용어 주문
- 21. MySQL 전체 텍스트 검색 - 키워드의 일부 검색
- 22. PostgreSQL과 MySQL의 전체 텍스트 검색
- 23. 전체 텍스트 검색 쿼리 빌드
- 24. 앞으로 검색은 전체 텍스트 검색
- 25. SQL 전체 텍스트 검색 문제
- 26. 연결된 열 전체 텍스트 검색?
- 27. 전체 텍스트 검색 알고리즘 C#
- 28. 전체 텍스트 mysql을 레일로 검색
- 29. 거리 함수 전체 텍스트 검색
- 30. Hibernate 전체 텍스트 검색 사용법