#ruby-on-rails #elasticsearch #searchkick
Вопрос:
Я бегу
Post.search("daniel")
Я получаю более 60 результатов
Post.where(archive: true)
Я получаю более 60 результатов
Post.search("daniel", where: { archive: true }
Here is the full searchkick query.
Я получаю 0 результатов
{
"query": {
"bool": {
"must": {
"bool": {
"should": [
{
"dis_max": {
"queries": [
{
"multi_match": {
"query": "daniel",
"boost": 10,
"operator": "and",
"analyzer": "searchkick_search",
"fields": [
"*.analyzed"
],
"type": "best_fields"
}
},
{
"multi_match": {
"query": "daniel",
"boost": 10,
"operator": "and",
"analyzer": "searchkick_search2",
"fields": [
"*.analyzed"
],
"type": "best_fields"
}
},
{
"multi_match": {
"query": "daniel",
"boost": 1,
"operator": "and",
"analyzer": "searchkick_search",
"fuzziness": 1,
"prefix_length": 0,
"max_expansions": 3,
"fuzzy_transpositions": true,
"fields": [
"*.analyzed"
],
"type": "best_fields"
}
},
{
"multi_match": {
"query": "daniel",
"boost": 1,
"operator": "and",
"analyzer": "searchkick_search2",
"fuzziness": 1,
"prefix_length": 0,
"max_expansions": 3,
"fuzzy_transpositions": true,
"fields": [
"*.analyzed"
],
"type": "best_fields"
}
}
]
}
}
]
}
},
"filter": [
{
"term": {
"archive": {
"value": true
}
...
Я посмотрел на документ searchkick gem и точно следую тому, что они перечислили для выполнения. Обычный поиск работает нормально, и он возвращает только 0 сообщений, когда я добавляю предложение where.
Без предложения where он показывает все записи, в которых есть «даниэль», и он прерывается при добавлении предложения where.
Что я здесь делаю не так? Требуется ли дополнительная информация?
require 'elasticsearch/model'
class Post < ApplicationRecord
searchkick text_start: [:title]
Комментарии:
1. В нижней части результатов показано
"filter": [ { "term": { "archive": { "value": false }
, что поиск былarchive: false
неверным. Это неправильный журнал или это подсказка?2. И это может быть глупый вопрос, но как вы уверены, что должны быть результаты для
Daniel
И архивировать: верно. Просто потому, что каждый из них возвращает результаты отдельно, не обязательно означает, что мы ожидаем результатов при использовании обоих.3. Сообщение.где(«название МНЕ НРАВИТСЯ ? и архив = ложь», «%#{параграфы[:термины]}%») работает нормально, но поиск по-прежнему не работает.
4. Можете ли вы добавить свои настройки searchkick в
Post
модель5. добавлено внизу.