- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试按语言过滤我的Elastica查询。我的查询工作正常,但是当我添加过滤器时,我得到0个结果。
我的实体:
<?php
namespace Youmiam\RecipeBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use JMS\Serializer\Annotation\ExclusionPolicy;
use JMS\Serializer\Annotation\Expose;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\HttpFoundation\File\UploadedFile;
/**
* Product
*
* @ORM\Table(name="product")
* @ExclusionPolicy("all")
* @ORM\Entity(repositoryClass="Youmiam\RecipeBundle\Entity\ProductRepository")
*/
class Product
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var \DateTime
*
* @ORM\Column(name="createdAt", type="datetime")
*/
private $createdAt;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255, nullable=true)
*/
private $name;
/**
* @ORM\ManyToOne(targetEntity="Youmiam\RecipeBundle\Entity\Brand", inversedBy="products")
* @ORM\JoinColumn(name="brand_id", referencedColumnName="id")
*/
private $brand;
/**
* @ORM\ManyToOne(targetEntity="Youmiam\RecipeBundle\Entity\Ingredient", inversedBy="products")
* @ORM\JoinColumn(name="ingredient_id", referencedColumnName="id")
* @Expose
*/
private $ingredient;
/**
* @ORM\ManyToMany(targetEntity="Youmiam\RecipeBundle\Entity\Recipe", inversedBy="products")
* @ORM\JoinTable(name="products__recipes")
*/
private $recipes;
/**
* @ORM\OneToMany(targetEntity="Youmiam\RecipeBundle\Entity\Quantity", mappedBy="product", orphanRemoval=true, cascade={"all"})
*/
private $quantities;
/**
* @var \stdClass
*
* @ORM\Column(name="photo", type="string", length=255, nullable=true)
* @Expose
*/
private $photo;
/**
* @Assert\File(maxSize="6000000")
*/
private $file;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set createdAt
*
* @param \DateTime $createdAt
* @return Product
*/
public function setCreatedAt($createdAt)
{
$this->createdAt = $createdAt;
return $this;
}
/**
* Get createdAt
*
* @return \DateTime
*/
public function getCreatedAt()
{
return $this->createdAt;
}
/**
* Set name
*
* @param string $name
* @return Product
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Set ingredient
*
* @param \Youmiam\RecipeBundle\Entity\Ingredient $ingredient
* @return Product
*/
public function setIngredient(\Youmiam\RecipeBundle\Entity\Ingredient $ingredient = null)
{
$this->ingredient = $ingredient;
return $this;
}
/**
* Get ingredient
*
* @return \Youmiam\RecipeBundle\Entity\Ingredient
*/
public function getIngredient()
{
return $this->ingredient;
}
/**
* Set brand
*
* @param \Youmiam\RecipeBundle\Entity\Brand $brand
* @return Product
*/
public function setBrand(\Youmiam\RecipeBundle\Entity\Brand $brand = null)
{
$this->brand = $brand;
return $this;
}
/**
* Get brand
*
* @return \Youmiam\RecipeBundle\Entity\Brand
*/
public function getBrand()
{
return $this->brand;
}
/**
* Constructor
*/
public function __construct()
{
$this->recipes = new \Doctrine\Common\Collections\ArrayCollection();
$this->quantities = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Set photo
*
* @param string $photo
* @return Product
*/
public function setPhoto($photo)
{
$this->photo = $photo;
return $this;
}
/**
* Get photo
*
* @return string
*/
public function getPhoto()
{
return $this->photo;
}
/**
* Sets file.
*
* @param UploadedFile $file
*/
public function setFile(UploadedFile $file = null)
{
$this->file = $file;
}
/**
* Get file.
*
* @return UploadedFile
*/
public function getFile()
{
return $this->file;
}
/**
* Add recipes
*
* @param \Youmiam\RecipeBundle\Entity\Recipe $recipes
* @return Product
*/
public function addRecipe(\Youmiam\RecipeBundle\Entity\Recipe $recipes)
{
$this->recipes[] = $recipes;
return $this;
}
/**
* Remove recipes
*
* @param \Youmiam\RecipeBundle\Entity\Recipe $recipes
*/
public function removeRecipe(\Youmiam\RecipeBundle\Entity\Recipe $recipes)
{
$this->recipes->removeElement($recipes);
}
/**
* Get recipes
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getRecipes()
{
return $this->recipes;
}
/**
* Add quantities
*
* @param \Youmiam\RecipeBundle\Entity\Quantity $quantities
* @return Product
*/
public function addQuantity(\Youmiam\RecipeBundle\Entity\Quantity $quantities)
{
$this->quantities[] = $quantities;
return $this;
}
/**
* Remove quantities
*
* @param \Youmiam\RecipeBundle\Entity\Quantity $quantities
*/
public function removeQuantity(\Youmiam\RecipeBundle\Entity\Quantity $quantities)
{
$this->quantities->removeElement($quantities);
}
/**
* Get quantities
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getQuantities()
{
return $this->quantities;
}
/**
* get the class Name
* @return string $className
*/
public function getClass()
{
return "Product";
}
/**
* @return Language
*/
public function getBrandLanguage()
{
return $this->brand->getLanguage();
}
}
fos_elastica:
clients:
default: { host: localhost, port: 9200 }
indexes:
youmiam:
settings:
index:
analysis:
analyzer:
keyword_analyser:
type: custom
tokenizer: keyword
classic_analyser:
type: custom
tokenizer: lowercase
filter : [my_snow,asciifolding]
ingr_analyser:
type: custom
tokenizer: lowercase
filter : [my_ing_ngram,asciifolding]
recipe_analyser:
type: custom
tokenizer: lowercase
filter : [my_recipe_ngram,asciifolding]
testfollower:
type: stop
stopwords : [',']
filter:
my_snow:
type : "snowball"
language : "French"
my_ing_ngram:
type: "nGram"
min_gram: 3
max_gram: 8
my_recipe_ngram:
type: "nGram"
min_gram: 4
max_gram: 10
char_filter:
my_whtoa :
type : mapping
mappings : ["' '=>a",]
client: default
finder: ~
types:
product:
mappings:
name: { boost: 10, analyzer: classic_analyser }
brand: { boost: 10, analyzer: classic_analyser }
ingredient: { boost: 10, analyzer: classic_analyser }
brandLanguage: { boost: 10 }
persistence:
driver: orm
model: Youmiam\RecipeBundle\Entity\Product
provider: ~
listener: ~
finder: ~
repository: Youmiam\RecipeBundle\SearchRepository\ProductRepository
$boolQuery = new \Elastica\Query\Bool();
$query = new \Elastica\Query;
$queryString = new \Elastica\Query\QueryString();
$queryString->setQuery($searchText);
$queryString->setAnalyzer('classic_analyser');
$queryString->setFields(array('product.name', 'product.brand', 'product.ingredient'));
$boolQuery->addMust($queryString);
$query->setQuery($boolQuery);
$filter = new \Elastica\Filter\Term();
$filter->setTerm('brandLanguage', 'fr');
$query->setPostFilter($filter);
return $this->find($query);
最佳答案
首先要做的是在Elastica外部测试查询,您可以从Sf2 Profiler或日志中获取JSON。
接下来,确保您的文档以所需的方式在Elasticsearch中发送(在工具like Sense中执行一个简单的GET /youmiam/product/_search
请求以查看它们)。
我看到您的brandLanguage
字段正在使用标准分析器,您可以看到Elasticsearch如何通过这样的查询对它进行索引:GET /youmiam/_analyze?field=brandLanguage&text=FR
-是否存在具有确切值fr
的 token ?如果没有,将没有匹配项。
最佳做法是也将此类字段设置为“not_analyzed”。
除了代码没有问题(可以使用FilteredQuery而不是postFilter但这不是问题)之外,您还应该仔细研究索引的内容以及如何直接通过Sense查询它,然后使用Elastica对其进行翻译。
关于symfony - Fos elastica过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25895301/
我已经关注了 installation guide对于 FOSUserBundle,在第 8 步出现以下错误: [Symfony\Component\DependencyInjection\Excep
我正在努力使自己的嵌套过滤器能够正常工作, 我有一个人实体,这是它的映射 http://localhost:9200/search/person/_mapping { "search": {
我尝试按语言过滤我的Elastica查询。我的查询工作正常,但是当我添加过滤器时,我得到0个结果。 我的实体: id; } /** * Set createdAt
我被要求在 CRM 中添加一封确认电子邮件,然后用户将注册,然后会收到一封包含确认链接的电子邮件,以便启用他们的帐户。但是,每当单击该链接时,它都会立即重定向到登录页面,这是没有用的,因为他们尚未确认
我在 Symfony 中使用 FOS 用户包,我真的不喜欢用户在 24 小时内只能请求密码 1 次。有什么方法可以禁用此功能,以使用户能够多次请求其密码。我的意思是,如果他们的重置电子邮件从未到达他们
如何 FOS User Bundle通过此服务容器对用户进行身份验证? $this->container->get('security.context')->getToken()->getUser()
我目前正在使用 FOSRESTBundle与 JMSSerialize制作一个 RESTFull API(当然)。 我的项目是面向客户和管理员的外联网。 这样,我必须禁止客户查看某些字段,只有管理员才
我回来了关于我的 UserBundle 的另一个问题: 通过 Symfony2 安装和配置 FOS 包时,一切都很完美,它甚至让我创建了 2 个正确插入到我的数据库中的用户。 但是,每次我尝试登录这些
我正在使用 FOS bundle ,并且希望从数据库中检索具有给定角色的所有用户。 最好的方法是什么? 最佳答案 只需将其添加到您的 UserRepository 中或将 $this->_entity
您好,我正在尝试通过FosElasticaBundle获取查询结果,我 如果没有可能不突出显示这些单词,那么找不到用于过滤常见单词(和(或))的有效示例。到目前为止我的奋斗: $searchF
我很难覆盖 Symfony2 的 FOS 用户包使用的标签。 我已经覆盖了 Form 类,但是没有像“setOption”这样的元素的选项,只有 getter。 我可以删除一个元素,然后使用正确的标签
这是我第一次自己使用 Symfony2,我想我在配置 FOS User Bundle 时犯了一个错误。看起来我的用户实体没有正确扩展 FOS\UserBundle\Entity\User。 这是我的
我正在对使用 FOS Elastica 的存储库进行单元测试,我想知道是否有人知道如何获取查询的字符串版本,而不是数组形式。这是我的存储库方法: /** * Creates quer
JS RoutingBundle 仅为本地主机生成路由。 为什么会这样? 在我的开发服务器上 Routing.generate('index'); "/web/app.php/" 在我的产品服务器上
我正在尝试扩展 FOS UserBundle 以允许扩展配置文件实体保存除基本 UserBundle 字段之外的其他信息。因为我在站点上有多种类型的用户,所以我创建了单独的实体来保存个人资料信息。我将
这就是我正在做的事情我已经使用 FOS 用户包定义了自定义用户类型也使用 sonata admin 包,我已经成功地为 admin config.yml 创建了服务,还生成了 fos我的自定义包中的用
我在安装 FOS 用户包时遇到问题。我试图到处搜索它,但可能是我太笨了,找不到它。 我创建了一个名为 Admin 的实体并尝试运行 doctrine:schema:update --force我有一个
我在 unidirectional many-to-one 中有两个实体类关系和两个 fos rest Controller ,负责创建、获取、更新和删除它们中的每一个,使用它们自己的表单类型(如 h
我需要有关在 Symfony2 项目中构建自定义身份验证的帮助。我读过 symfony 食谱 http://symfony.com/doc/2.3/cookbook/security/custom_a
我正在开发一个使用 Symfony2 和 fos-restbundle 的应用程序。我想创建一些 API 路由和一些常规路由(正好是 AngularJS 前端的一个)。这是我的 fos_rest 配置
我是一名优秀的程序员,十分优秀!