Я очень новичок в поиске/индексировании, и я работаю над использованием FosElasticaBundle от Symfony для обеспечения функциональности поиска в веб-приложении. У меня есть настройка и запуск без проблем, пока я не обнаружил, что параметр по умолчанию разрешает полный поиск по словам.Конфигурация FOSElasticaBundle/elasticsearch для частичного совпадения слов
Затем я попытался в течение нескольких часов, чтобы обеспечить частичное совпадение слов без везения. Я пробовал nGram и edgenGram и т. Д., Но я был очень смущен всеми понятиями. Я попытался найти учебник по концепциям и конфигурациям, но не получал ответов.
Вот мой конфиг:
fos_elastica:
clients:
default: { host: localhost, port: 9200 }
serializer:
callback_class: FOS\ElasticaBundle\Serializer\Callback
serializer: serializer
indexes:
website:
client: default
finder: ~
settings:
index:
analysis:
analyzer:
index_analyzer:
tokenizer: "nGram"
filter: ["lowercase", "snowball"]
search_analyzer:
tokenizer: "nGram"
filter: ["lowercase", "snowball"]
filter:
snowball:
type: "snowball"
language: "English"
types:
client:
mappings:
BusinessName: { boost: 10 }
users:
type: "object"
properties:
firstName: { boost: 5 }
lastName: { boost: 5 }
email: { boost: 10 }
persistence:
driver: orm # orm, mongodb, propel are available
model: E1\Bundle\CoreBundle\Entity\Client
listener:
provider: ~
finder: ~
документация не полезно. Может ли кто-нибудь дать мне некоторый свет о том, как получить частичное сопоставление слов и/или сообщить мне, где я могу найти учебное пособие по концепциям (токенизатор, фильтры, анализатор)?
Но с использованием ('Po *') будут получены все документы, где «Po» или «po» независимо от того, где они были размещены - в начале или в середине или в конце. Есть ли способ ограничить поиск, так что найдены только элементы, начинающиеся с «po»? –