Как создать документ Solr с типом String с помощью запроса солярия - PullRequest
0 голосов
/ 10 июля 2019

Я создаю документ solr через плагин солярия в php.

Но весь документ хранится text_general тип данных, кроме поля id.text_general является типом данных по умолчанию в системе solr.

Я сомневаюсь, почему в поле id используется только сохраненный тип строки по умолчанию.

И, если возможно, добавить документ с типом string с помощью плагина солярия.

Моя часть кода здесь,

        public function updateQuery() {
            $update = $this->client2->createUpdate();

            // create a new document for the data
            $doc1 = $update->createDocument();
            // $doc1->id = 123;
            $doc1->name = 'value123';
            $doc1->price = 364;

            // and a second one
            $doc2 = $update->createDocument();
            // $doc2->id = 124;
            $doc2->name = 'value124';
            $doc2->price = 340;

            // add the documents and a commit command to the update query
            $update->addDocuments(array($doc1, $doc2));
            $update->addCommit();

            // this executes the query and returns the result
            $result = $this->client2->update($update);

            echo '<b>Update query executed</b><br/>';
            echo 'Query status: ' . $result->getStatus(). '<br/>';
            echo 'Query time: ' . $result->getQueryTime();
        }

Результирующий документ для вышеуказанного кодаздесь,

{
  "responseHeader":{
    "status":0,
    "QTime":2,
    "params":{
      "q":"*:*",
      "_":"1562736411330"}},
  "response":{"numFound":2,"start":0,"docs":[
      {
        "name":["value123"],
        "price":[364],
        "id":"873dfec0-4f9b-4d16-9579-a4d5be8fee85",
        "_version_":1638647891775979520},
      {
        "name":["value124"],
        "price":[340],
        "id":"7228e92d-5ee6-4a09-bf12-78e24bdfa52a",
        "_version_":1638647892102086656}]
  }}

1 Ответ

0 голосов
/ 10 июля 2019

Это зависит от типа поля , определенного в схеме для вашей установки Solr. Это не имеет никакого отношения к тому, как вы отправляете данные через Solarium.

В режиме без схемы поле id всегда задается как строка, поскольку уникальное поле не может быть разбито на токены (ну, может, но оно даст странные, неочевидные ошибки).

В вашем случае я бы предложил определить поле price как целое / длинное поле (если оно полностью целое), а поле name как строковое поле. Помните, что поля string генерируют попадания только для точных совпадений, поэтому в вашем случае вам придется искать value124 с точным регистром, чтобы получить попадание.

Вы также можете настроить свойство multiValued поля при явном определении полей. Таким образом вы получите только строку обратно в структуру JSON вместо массива, содержащего строку.

...