Solr,仅在EdgeNGramFilterFactory匹配时返回结果(Solr, only returning results if EdgeNGramFilterFactory matches)
我正在搜索一个多值字段,定义为:
<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType>
但是,如果我正在搜索超过15的
maxGramSize
的单词,我就不会得到任何结果。 所以用以下索引:vedlikeholdsskjema på toyota corolla Gode ting kiwi kan spises med skall, banan
我得到的结果是“kiwi”,“banan”等,但不是“vedlikeholdsskjema”。 我想我可以增加
maxGramSize
大小,但我认为StandardTokenizerFactory
和LowerCaseFilterFactory
在这种情况下会给我匹配。这是分析页面的屏幕截图 。
我正在运行Solr 4.7.0。
I'm searching a multivalued field which is defined as:
<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType>
But if I'm searching for words which are longer than the
maxGramSize
of 15, I don't get any results. So with the following indexed:vedlikeholdsskjema på toyota corolla Gode ting kiwi kan spises med skall, banan
I get results on "kiwi", "banan" etc. but not on "vedlikeholdsskjema". I guess I could increase the
maxGramSize
size, but I would have thought theStandardTokenizerFactory
andLowerCaseFilterFactory
would have given me matches in this case.Here is screenshot of the analysis page .
I'm running Solr 4.7.0.
原文:https://stackoverflow.com/questions/28849289
最满意答案
根据您的代码段,您可以选择包含属性数据奇数的所有标签TD 。
private void Form1_Load(object sender, EventArgs e) { string url = "http://www.betexplorer.com/soccer/sweden/allsvenskan/results/"; HtmlWeb web = new HtmlWeb(); HtmlAgilityPack.HtmlDocument doc = web.Load(url); var nodes = doc.DocumentNode.SelectNodes("//td[@data-odd]"); foreach (HtmlNode node in nodes) { //Here process your node //Example: to get data-odd value var val = node.GetAttributeValue("data-odd", ""); } }
Here it is some Msdn Examples: XPath Examples; XPath Reference
According to your snippet you could select all tags TD that contain attribute data-odd.
private void Form1_Load(object sender, EventArgs e) { string url = "http://www.betexplorer.com/soccer/sweden/allsvenskan/results/"; HtmlWeb web = new HtmlWeb(); HtmlAgilityPack.HtmlDocument doc = web.Load(url); var nodes = doc.DocumentNode.SelectNodes("//td[@data-odd]"); foreach (HtmlNode node in nodes) { //Here process your node //Example: to get data-odd value var val = node.GetAttributeValue("data-odd", ""); } }
相关问答
更多-
你使用哪个版本的HTML? 在HTML 5中,具有以data-为前缀的自定义属性是完全有效的,例如 在XHTML中,这不是真的有效。 如果您使用的是XHTML 1.1模式,浏览器可能会抱怨,但是在1.0模式下,大多数浏览器将会默认忽略它。 如果我是你,我将遵循基于脚本的方法。 您可以使其在服务器端自动生成,以免在后台维护。 Which version of HTML are you using? In HTML 5, it is tot ...
-
在HTML5中,是的。 你只需要用data-前缀。 见规格 当然,这意味着你应该使用HTML5 doctype( ),即使浏览器不在乎。 In HTML5, yes. You just have to prefix them with data-. See the spec. Of course, this implies you should be using the HTML5 doctype (), even though browsers ...
-
AngularJS标签属性(AngularJS tags attributes)[2022-06-17]
严格来说,这些额外的属性在HTML规范中没有定义,因此不是有效的HTML。 您可以说AngularJS提供和解析HTML规范的超集。 但是,从v1.0.0rc1开始,您可以使用data- *属性,例如 ,我认为这是有效的HTML5。 来源 。 AngularJS编译器有一个指南,其中包含有关进程的更多信息。 简而言之; AngularJS编译器读取您的HTML页面,使用这些属性来指导它在编辑和更新您的页面后,加载后,通过JavaScript和HTML DOM。 Stric ... -
HTML标签的非标准属性。(Non-Standard Attributes on HTML Tags. Good Thing? Bad Thing? Your Thoughts?)[2023-09-08]
我是提出的HTML 5解决方案( data-前缀属性)的粉丝。 编辑:我补充说,使用自定义属性可能有更好的例子。 例如,自定义应用程序将使用的数据在标准属性中不具有模拟(例如,根据不一定在className或id中表达的事物来定制事件处理程序)。 I am a big fan of the proposed HTML 5 solution (data- prefixed attributes). Edit: I'd add that there are probably better examples fo ... -
没有。 No.
-
使用HtmlAgillityPack如何获取HTML标签的数据和属性?(Using HtmlAgillityPack how can get data and attributes HTML tags?)[2022-07-28]
这是一些Msdn示例: XPath示例 ; XPath参考 根据您的代码段,您可以选择包含属性数据奇数的所有标签TD 。 private void Form1_Load(object sender, EventArgs e) { string url = "http://www.betexplorer.com/soccer/sweden/allsvenskan/results/"; HtmlWeb web = new HtmlWeb(); HtmlAgili ... -
未知属性将被忽略,因为它们不执行任何操作,但它们仍可供getAttribute检索。 我很确定可以安全地假设data-*不用于其他任何东西 - 否则他们会选择一个与其他东西不冲突的不同识别关键字。 Unknown attributes are ignored in that they don't do anything, but they are still available for getAttribute to retrieve. I'm fairly sure it's safe to assume ...
-
使用getElementsByTagName 1.getAttribute(“data-directories”) var directories = document.getElementsByTagName("html")[0].getAttribute("data-directory"); 2. .rc或.getAttribute(“src”)的工作方式相同 var base_url=document.getElementsByTagName("script")[0].src.split(/\b(? ...
-
如前所述,您需要使用NSAttributedString 它实现了以下方法,您将传递属性的NSDictionary和范围(characteres)以接收属性 - (void)setAttributes:(NSDictionary *)attributes range:(NSRange)range; NSDictionary的一个例子是: @{ NSFontAttributeName: [UIFont systemFontOfSyze:24], NSForegroundColorAttributeName: ...
-
Spring不关心你在jsp文件中使用什么标签。 浏览器呢。 为HTML5使用正确的文档类型是: Spring doesn't care what tags you use in your jsp files. The browser does. Use a correct document type for HTML5 is all: