将列表与 neo4j 中的字符串进行比较,阅读自 HTML
Comparing List to String in neo4j, reading from HTML
这是我的问题:
假设我有一个 HTML 文件,其中包含如下 table
<table>
<tr>
<td> keyword1 </td>
<td>
<p> paragraph 1 </p>
</td>
</tr>
<tr>
<td> keyword2 </td>
<td>
<p> paragraph 2 </p>
<p> paragraph 3 </p>
</td>
</tr>
<tr>
<td> keyword3 </td>
<td>
<p> paragraph 1 </p>
<p> paragraph 3 </p>
</td>
</tr>
</table>
我使用以下代码从 HTML
中提取信息
CALL apoc.load.html("file:///input_HTML.html",{kwords:"table tr td:eq(1)",
paragraphs:"table tr td:eq(2)",paragraphsList:"table tr td:eq(2) p"}) YIELD value
我想在最后得到的是,对于 table 的每个输入行,类似于下面的语句,但当然是在读取 HTML 文件时动态创建的
CREATE(:kwords {name:"keyword1"})-[:'APPEARS_IN']->(:paragraph {name:"paragraph1"})
棘手的部分是获取段落名称...有什么提示吗?
您需要寻找索引为 1
的 td
元素;元素索引从 0
.
开始
...
paragraphs:"table tr td:eq(1)",paragraphsList:"table tr td:eq(1)
...
但我不确定它是否仍然能让你做你想做的事。
如何一次性获取关键字,然后在第二遍中为每个关键字选择段落。
CALL apoc.load.html("file:///input_HTML.html",{kwords: "tr td:eq(0)"}) YIELD value
UNWIND value.kwords AS kw
WITH kw.text AS kw
CALL apoc.load.html("file:///input_HTML.html",{paras: 'tr:contains(' + kw + ') td:eq(1) p'}) YIELD value
UNWIND value.paras AS para
MERGE (k:kwords {name: kw })
MERGE (p:paragraph {name: para.text})
MERGE (k)-[:APPEARS_IN]->(p)
RETURN *
这是我的问题: 假设我有一个 HTML 文件,其中包含如下 table
<table>
<tr>
<td> keyword1 </td>
<td>
<p> paragraph 1 </p>
</td>
</tr>
<tr>
<td> keyword2 </td>
<td>
<p> paragraph 2 </p>
<p> paragraph 3 </p>
</td>
</tr>
<tr>
<td> keyword3 </td>
<td>
<p> paragraph 1 </p>
<p> paragraph 3 </p>
</td>
</tr>
</table>
我使用以下代码从 HTML
中提取信息CALL apoc.load.html("file:///input_HTML.html",{kwords:"table tr td:eq(1)",
paragraphs:"table tr td:eq(2)",paragraphsList:"table tr td:eq(2) p"}) YIELD value
我想在最后得到的是,对于 table 的每个输入行,类似于下面的语句,但当然是在读取 HTML 文件时动态创建的
CREATE(:kwords {name:"keyword1"})-[:'APPEARS_IN']->(:paragraph {name:"paragraph1"})
棘手的部分是获取段落名称...有什么提示吗?
您需要寻找索引为 1
的 td
元素;元素索引从 0
.
...
paragraphs:"table tr td:eq(1)",paragraphsList:"table tr td:eq(1)
...
但我不确定它是否仍然能让你做你想做的事。
如何一次性获取关键字,然后在第二遍中为每个关键字选择段落。
CALL apoc.load.html("file:///input_HTML.html",{kwords: "tr td:eq(0)"}) YIELD value
UNWIND value.kwords AS kw
WITH kw.text AS kw
CALL apoc.load.html("file:///input_HTML.html",{paras: 'tr:contains(' + kw + ') td:eq(1) p'}) YIELD value
UNWIND value.paras AS para
MERGE (k:kwords {name: kw })
MERGE (p:paragraph {name: para.text})
MERGE (k)-[:APPEARS_IN]->(p)
RETURN *