2017-02-15 7 views
1

나는 Solr 5.3.1을 가지고 있으며 일부 필드를 제외하고 모든 필드에 대한 쿼리를 수행해야합니다. Q = 쿼리 & FL = 필드 1, 2 필드, FIELD3])SOLR 쿼리의 일부 필드를 무시할 수있는 방법

난 [이 soluation]가 작동하지 일부 용액하려고하지만

1. How to exclude fields in a SOLR query 작동하지

2 아래 용액 작동하지만 시간이 더 걸림]

,363,210
query = field1:"+txtSearch+"OR field1:"+ txtSearch+" OR field1:"+txtSearch 

3.I이 는 단지이 분야에서 검색을 무시하지만 관계없이 모든 필드 http://localhost:8983/solr/test?q=query 모든 필드에서 쿼리 검색을 검색 할 때 색인 데이터-config.xml에 에서 = "false"를 색인 설정 = " 거짓 "OR 사실 나는 모든이를 찾아

Retrieving specific fields in a Solr query?

How to exclude fields in a SOLR query

012 링크 3,516,

https://www.drupal.org/node/1933996

답변

0

indexed="false" 필요가의 schema.xml에서 언급한다. 당신의 schema.xml을 수정하면

, 당신은 데이터를 다시 인덱싱해야합니다.

그런 SOLR 인덱싱되지 않습니다 분야에서 검색하지 않습니다 (당신은뿐만 아니라 서버를 다시 시작해야합니다). 특정 필드에서 검색하려면 해당 필드의 필드 이름과 검색 값을 사용할 수 있습니다.

`q=field1:"value1"` 
    q=field1:value1 OR field2:value2 
    q=field1:value1 AND field2:value2 
    q=value1&fq=field2:value2&fq=field3:value3 
2

사용과 같은 copyField

다음

당신이 사용할 수있는 방법입니다 :

  • 모든 필드 = "true"로 저장
  • = "false"를 색인 확인
  • 또한 새 필드를 만들려면 multiValued = "true", stored = "false"및 indexed = "true"인 cffield를 말하십시오.

예 스키마 : 검색 할에서

  • <field name="field1" type="string" indexed="false" stored="true"/> 
    <field name="field2" type="string" indexed="false" stored="true"/> 
    <field name="field3" type="string" indexed="false" stored="true"/> 
    .... 
    <field name="cffield" type="string" indexed="true" stored="false" multiValued="true"/> 
    
    지금, 사용 copyField 태그의 설정 소스 값이

예 스키마를 dest로하는 소스 필드에서 모든 필드 복사 :

<copyField source="field1" dest="cffield"/> 
<copyField source="field2" dest="cffield"/> 
.... 

이제 다음을 사용하여 검색 할 수 있습니다.

query = cffield:txtSearch 

이것은 당신이 이명 령으로 copyField의 소스와 cffield를 사용하는 모든 분야에서 결과를 줄 것이다

+1

** 지금 일 것 ** 감사합니다 :) –