저는 solr을 처음 사용하고 있습니다. 나는 데이터베이스를 검색하고 싶다. 값을 가져 와서 색인을 생성 할 수 있습니다. 그러나 검색하는 동안 필드 이름을 지정하지 않으면 검색 쿼리에서 언급 할 필요가있는 것 같습니다.solr 데이터 가져 오기 검색
1
A
답변
0
모든 데이터를 default field으로 가져올 수 있습니다. 그런 다음 필드 이름을 명시 적으로 언급 할 필요가 없습니다.
:첫 번째 필드가 다른 필드처럼 선언해야합니다 : (당신은 아직도 당신이 원하는 수있는 경우 만)
SOLR와 기본 schema.xml
이미 이러한 "캐치 올"필드를 사용하는 예제를 포함
<field name="text" type="text_general" indexed="true"
stored="false" multiValued="true"/>
그런 다음이 새 필드를 기본 필드로 선언해야합니다. 특정 필드가 검색되지 때마다,이 하나가 검색됩니다
<copyField source="cat" dest="text"/>
<copyField source="name" dest="text"/>
<copyField source="my_special_field_1" dest="text"/>
<copyField source="my_special_field_2" dest="text"/>
...
분야 my_special_field_1
가 인덱싱 그래서 때마다 :
<defaultSearchField>text</defaultSearchField>
당신은 또한 포괄 필드에 기존의 모든 필드를 복사 일부 copyField
문 필요 그 값은 필드에 추가 된입니다. 당신은 당신이 어떤 분야를 지정하지 않고 검색을 수행 할 수 있습니다 그 후
<copyField source="*" dest="text"/>
으로 text
필드에 모든 필드를 복사 할 수있는 바로 가기로
.
빠른 응답을 부탁드립니다. 모든 필드를 복사하면 성능 문제가 발생할 수 있습니다. copyfield로 인해 두 번 저장된 값이 있다는 뜻입니다. – user1025397
인덱스의 크기는 증가하지만 검색 시간은 증가하지 않습니다 (쿼리의 모든 필드를 명시 적으로 표시하는 것과 비교할 때). 또한 'stored' 매개 변수가 false이므로 원래 데이터가 저장되지 않으므로 인덱스 증가는 온건하다. –
다시 한 번 감사드립니다. 마지막으로 중요한 것은 3 개의 다른 테이블이 있습니다. 모두 색인을 생성하고 검색 한 후에 서로 다른 필드 이름을가집니다. 검색 결과 목록을 얻고 있습니다. 여기에서 어떻게 다른 테이블 레코드를 구별 할 수 있습니까? – user1025397