solr: запросить поле словаря - PullRequest
0 голосов
/ 28 января 2020

Я загрузил следующий документ json в solr 8.3.1. Я использую pysolr для запроса.

my_json2 = {"fileName": "test2", "my_content2": {"my_text1":"This a test with bank BoA bank and banking Chase banking.", "my_text2": "My name is Robert"}}

os.environ['SOLR_URL']="http://localhost:8983/solr"
solr_url = os.environ.get('SOLR_URL')
solr_collection = 'Banking'

Я пишу запрос, используя следующие функции -

def solr_search(q, **kwargs):
    results = solr.search(q, **kwargs)
    return results

sampleText = solr_search("{}".format(keyWord), **{
    "defType": "edismax",
    "debug": "true",
    "qf": "my_content2",
    "rows":10,
    "fl": "fileName"})

Я запрашиваю ключевое слово «банк». Но я получаю в результате 0 документов.

Как я могу запросить указанное поле c в solr, если запрашиваемое поле является словарем?

Я добавил следующий код в мою управляемую схему. xml -

<fieldType name="text_ngrm" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
      <filter class="solr.NGramFilterFactory" maxGramSize="50" minGramSize="1"/>
      <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
    <analyzer type="query">
      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
      <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
  </fieldType>


<field name="my_content2" type="text_general" multiValued="false" indexed="true" stored="true"/>
  <field name="my_content2.my_text1" type="text_ngrm" indexed="true" stored="true"/>
  <field name="my_content2.my_text2" type="text_ngrm" indexed="true" stored="true"/>
...