2014-10-17 2 views
1

내 응용 프로그램에는 수천 (아마도 수백만 개)의 모델이 있으며, 단락이라고 불러서 텍스트가 들어 있습니다. 이 텍스트의 주요 용도는 웹 페이지에 표시하는 것입니다. 때로는 그 텍스트가 여러 가지 다른 이유로 검색됩니다.텍스트 용 메타 데이터를 우아하게 저장하는 레일

일부 단락의 단어 중 일부는 포맷팅, 하이퍼 링크 또는 프론트 엔드의 자바 스크립트에서 의미가있는 다른 데이터 속성과 같은 메타 데이터와 관련이 있습니다.

는 지금, 난 그냥 바로 텍스트로 궁극적 인 html 태그를 고집하고있어, 그래서 이런 식으로 저장되는 끝 :

<strong>Jimmy</strong> is walking his <a href="somewhere">dog</a> which is <span class="something" data-metadata_id="2343">brown</span>.

이 텍스트를 표시하는 주 목적을 위해 잘 작동합니다 ,하지만 내 텍스트를 검색하거나 다른 텍스트 처리를 원할 때 매우 추합니다. 더 좋은 방법이 있습니까? 이런 종류의 물건을 다루는 보석이 있습니까?

답변

0

두 버전을 데이터베이스에 배치하는 것이 좋습니다. 하나는 표시 장치이고 다른 하나는 색인 장치입니다. 디스크가 저렴합니다. 특히 Solr 또는 유사한 것을 사용하고 있다면 (문자열 검색을하는 경우 매우 권장됩니다.), HTML의 저장은 가능하지만 (색인은 아님) 일반 텍스트 버전의 색인을 생성 할 수 있습니다. 같은 기록.

+0

나는 청소기로 그런 식으로 가고 있었다. 나는 텍스트를 추가로 처리하고 추가 태그를 추가하려고 할 때 코드가 어떻게 생겼는지에 대해 여전히 약간의 예약을했다. 예를 들어 나중에 내 앱에서 '워킹'이라는 단어의 모든 인스턴스를 마크 업하려면 앱에서 클린 버전을 검색하고 단어를 찾은 다음 마크 업 된 버전을 다시 검색하고 '워킹'이라는 단어를주의해야합니다. 메타 데이터가 아닌 '실제'텍스트에 있음을 확인한 다음 랩핑합니다. 아직도 추한 것 같지만, 내가 할 수있는 최선의 방법은 무엇입니까? –

+0

마크 업을 스탠드 오프 형식 (일반 텍스트와 시작/끝 위치가있는 주석)으로 변환하는 대안이 있지만 그와 함께 두통이 또한 있습니다. – Amadan

+0

또한 때로는 메타 데이터가 해당 ID를 통해 다른 데이터베이스 객체를 참조합니다. 이러한 접근법은 해당 객체에 대한 변경 사항을 처리하기 위해 하위 지점으로 보입니다 (예 : 삭제 된 경우). 그러나 데이터베이스의 모든 단어에 대해 새로운 모델/레코드를 만드는 것은 매우 비쌉니다. –

관련 문제